我有一些关于jQuery的eq()属性以及如何多次选择的问题。
实施例: 我有一个包含15个项目的列表。我希望每个第1,第6和第11项具有背景颜色。第2,第7和第12具有另一种背景颜色,第3,第8和第13具有背景颜色等,等等。
我虽然使用了eq()属性但是如果我的列表需要增长,我不想在每次有人添加新列表项时在jQuery中手动添加背景颜色。
如果我的列表需要增长,那么下一个颜色将与其后面的颜色重合。 因此,第16个列表项将需要与第1个相同的背景。
这有意义吗?
我将如何在jQuery中实现这一目标。一个循环?我该怎么做
提前致谢。
答案 0 :(得分:0)
使用.each(),它还可以访问元素索引。您可以对索引执行模数以确定应用哪些行规则。
答案 1 :(得分:0)
如果可以纯粹使用css。最重要的是,css也适用于动态添加的元素。
:nth-child( { number expression | odd | even } ) {
declaration block
}
指定适当的表达式以选择2nd,3rd etc元素并添加所需的样式。它在所有现代浏览器中都受支持。
E.g。要选择选择第1,第6,第11 ......请使用此功能。
:nth-child(5n + 1) {
...
}
答案 2 :(得分:0)
:nth-child
选择器允许重复模式
http://api.jquery.com/nth-child-selector/
示例:
每第4项
$('li:nth-child(4n)').addClass('blue');
答案 3 :(得分:0)
尝试使用:nth-child
代替eq()。见下文,
$(document).ready(function () {
$('#myList li:nth-child(5n+1)').addClass('pink');
$('#myList li:nth-child(5n+2)').addClass('blue');
$('#myList li:nth-child(5n+3)').addClass('yellow');
});
答案 4 :(得分:0)
通常,您应该使用CSS进行样式设置。但是,如果您没有使用CSS的任何选项,您可以尝试类似的东西:
$('ul#list li').css('background-color', function(idx) {
switch (idx % 5) {
case 0: return '#000';
case 1: return '#111';
case 2: return '#222';
case 3: return '#333';
case 4: return '#444';
case 5: return '#555';
default: return '#000';
}
});