У меня есть раздел html, который похож на:
<div class="ms-row">
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
</div>
<div class="ms-row">
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
</div>
<div class="ms-row">
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
<div class="ms-image"></div>
</div>
У меня есть сценарий jQuery, который должен влиять на каждый каждый div файл ms-image в каждом div-строке ms. В настоящее время он применяется только к первому разделителю строк ms. Если я сделаю что-то вроде:
$( document ).ready(function()
$('.ms-row .ms-image').hide();
$('.ms-row .ms-image:lt(6)').show();
});
Все разделители ms-изображений скрыты, за исключением первых шести. Мне нужно, чтобы первые шесть divs в каждой строке ms отображались, а не первые шесть только в первом разделителе строк ms.
Вы получаете все элементы ms-image, которые являются дочерними элементами ms-row, и этого набора результатов, показывающего первое 6. Что вам нужно сделать, так это получить первые шесть из каждой строки.
$( document ).ready(function()
$('.ms-row .ms-image').hide();
$('.ms-row').each(function(){
$(this).find('.ms-image:lt(6)').show();
});
});
Или, как @Val отметил, избегать .each
делая
$( document ).ready(function()
$('.ms-row .ms-image').hide();
$('.ms-row').find('.ms-image:lt(6)').show();
});
Вы можете просто скрыть изображение детей после 6:
$('.ms-row').each(function(){
$(this).children('.ms-image:gt(5)').hide();
});
или как @Val предлагает только одну строку:
$('.ms-row').find('.ms-image:gt(5)').hide();
Попробуй это:
$( document ).ready(function()
$('.ms-row').each(function(){
$(this).children('.ms-image:gt(5)').hide();
$(this).children('.ms-image:lt(6)').show()
});
});
Вам не нужно перебирать каждое изображение ms и скрывать их. Вам нужно всего лишь скрывать.ms-образ, если их больше.
Попробуй это:
$( document ).ready(function()
$('.ms-row .ms-image').each(function(){
$(this).hide();
}
$('.ms-row .ms-image:lt(6)').each(function(){
$(this).show();
}
});
Попробуй это:
$( document ).ready(function()
$('.ms-row .ms-image').hide();
$('.ms-row').each(function(){
$(this).find('.ms-image:lt(6)').show();
});
});
Вы можете использовать .each()
$('.ms-image').each(function(){
$(this).hide();
})
.each()
:$('.ms-row').find( '.ms-image:lt(6)').show();
.each()
$('.ms-row').find( '.ms-image:lt(6)').show();