JQUERY 在多个无序列表中选择第 n 个列表元素
JQUERY Selecting nth list element across multiple unordered lists
不幸的是,这不能用纯 css 来完成,因为 nth-of-type 只有 selects 与元素的父元素 (w3schools) 相关。所以我正在寻找适用于多个列表的 jquery 替代方案。
HTML:
<div class="container" id="videos">
<ul class="thumbnails">
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
</ul>
<ul class="thumbnails">
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
</ul>
<ul class="thumbnails">
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
</ul>
</div>
JQUERY
$( "#videos li:nth-of-type(5n+1) img" ).css( "margin-left" , "0px");
这段代码仍然是 selecting :nth-of-type(5n+1) 相对于它的父级(无序列表)。我可以说是因为每个 ul 中的第一个列表项正在 selected。我需要 select 每个无序列表中的第 5 个列表项,忽略它的父项。
您的 .css() 的结构格式错误。 (有一个 : 而不是 , )另外,选择器没有工作,不知道为什么选择器没有按照你的方式工作,但这应该可以工作。
$( "#videos li:nth-of-type(5n+1)" ).find('img').css( "margin-left","0px");
var items = $('#videos li'),
counter = 0, // first element, counting starts at zero
step = 5,
item = null;
while((item = items.eq(counter)).length) {
item.addClass('special'); // or do whatever else with it
counter += step;
}
编辑:或者,通过一个好的 ol' for
循环(这样我们就不必经常调用 .length
来查看是否还有元素):
var items = $('#videos li'),
start = 0, // first element, counting starts at zero
step = 5;
for(var i=start, l=items.length; i<l; i+=step) {
items.eq(i).addClass('special');
}
不幸的是,这不能用纯 css 来完成,因为 nth-of-type 只有 selects 与元素的父元素 (w3schools) 相关。所以我正在寻找适用于多个列表的 jquery 替代方案。
HTML:
<div class="container" id="videos">
<ul class="thumbnails">
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
</ul>
<ul class="thumbnails">
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
</ul>
<ul class="thumbnails">
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
<li class="tn">
<img class="tn-img" src="img/thumbnails/placeholder.jpg" />
</li>
</ul>
</div>
JQUERY
$( "#videos li:nth-of-type(5n+1) img" ).css( "margin-left" , "0px");
这段代码仍然是 selecting :nth-of-type(5n+1) 相对于它的父级(无序列表)。我可以说是因为每个 ul 中的第一个列表项正在 selected。我需要 select 每个无序列表中的第 5 个列表项,忽略它的父项。
您的 .css() 的结构格式错误。 (有一个 : 而不是 , )另外,选择器没有工作,不知道为什么选择器没有按照你的方式工作,但这应该可以工作。
$( "#videos li:nth-of-type(5n+1)" ).find('img').css( "margin-left","0px");
var items = $('#videos li'),
counter = 0, // first element, counting starts at zero
step = 5,
item = null;
while((item = items.eq(counter)).length) {
item.addClass('special'); // or do whatever else with it
counter += step;
}
编辑:或者,通过一个好的 ol' for
循环(这样我们就不必经常调用 .length
来查看是否还有元素):
var items = $('#videos li'),
start = 0, // first element, counting starts at zero
step = 5;
for(var i=start, l=items.length; i<l; i+=step) {
items.eq(i).addClass('special');
}