我想在jQuery元素集中选择每一个。
例如
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
<li>F</li>
<li>G</li>
</ul>
答案 0 :(得分:10)
您可以使用$.grep
函数将集合中的每个元素及其索引(基于0)传递给回调函数。因此,您需要决定要保留哪一个:
var elements = $('<ul><li>A</li><li>B</li><li>C</li><li>D</li><li>E</li><li>F</li><li>G</li></ul>').find('li');
var result = $.grep(elements, function(element, index) {
return (index + 1) % 3 == 0;
});
如果你想要其他元素,只需反转条件:(index + 1) % 3 != 0
另一种可能性是使用.filter()
函数:
var result = $('<ul><li>A</li><li>B</li><li>C</li><li>D</li><li>E</li><li>F</li><li>G</li></ul>')
.find('li')
.filter(function(index) {
return (index + 1) % 3 == 0;
});
答案 1 :(得分:2)
(1)$('li:nth-child(3n)')
- 选择每第三个列表项
http://api.jquery.com/nth-child-selector/
(2)$('li').not(':nth-child(3n)')
- 选择其他人
<小时/> 如果您没有DOM中的元素,但只有问题中指定的字符串,请将这些技术与
.children()
结合使用:
var thirds = $('<ul><li>A</li>...</ul>').children('li:nth-child(3n)');
var others = $('<ul><li>A</li>...</ul>').children('li').not(':nth-child(3n)');
在这种情况下,.children()
和.find()
可以互换使用,因为list-items中没有任何嵌套元素;一般情况下,前者只搜索单个级别,而后者搜索所有后代(如果你知道你只想降低一级,则效率不高)。
答案 2 :(得分:0)
我只是在一般意义上回复,你可以说你的问题定义的扩展(所以它对许多人有用)。
假设您想要选择每个第3个元素,但元素的开头不一定是第3个元素。 如果你想让第一个元素作为开始元素意味着选择应该是A,D,G或者跳过这些元素,请按照
$('li:nth-child(3n - 2)')
$('li').not(':nth-child(3n- 2)')
这里3个“3n”将选择第3个元素,“ - 2”将选择带到第一个元素。
以一般形式
$('li:nth-child(3n - x)')
$('li').not(':nth-child(3n- x)')
这里x
是变量来定义ex中详述的第一个元素。上述
谢谢和问候,
Rk_Hirpara