我想选择jQuery元素集中的每个第n个元素。jQuery集中的每个第n个元素
例如,
如何选择在
$('<ul><li>A</li><li>B</li><li>C</li><li>D</li><li>E</li><li>F</li><li>G</li></ul>')
每第三个(C和F)如何选择所有其它元素是不是每第三个(A,B,d,E,G)同一组?
我想选择jQuery元素集中的每个第n个元素。jQuery集中的每个第n个元素
例如,
如何选择在
$('<ul><li>A</li><li>B</li><li>C</li><li>D</li><li>E</li><li>F</li><li>G</li></ul>')
每第三个(C和F)如何选择所有其它元素是不是每第三个(A,B,d,E,G)同一组?
你可以使用$.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)$('li:nth-child(3n)')
- 如果你没有在DOM元素选择其他
http://api.jquery.com/nth-child-selector/
(2)$('li').not(':nth-child(3n)')
,但只在问题中指定的字符串中,将这些技术与.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()
可以互换使用,因为您在列表项中没有任何嵌套元素;但一般来说,前者只搜索单个层次,而后者搜索所有后代(如果知道只想降低一层,则效率不高)。
我只是在一般意义上回复,你可以说扩展到你的问题定义(所以它可以对很多人有用)。
假设你想选择每个第三个元素,但元素的开始不一定是第三个元素。 如果你想拥有的第一个元素作为开始元素意味着选择应该是A,d,G或跳过这些元素都遵循
$('li:nth-child(3n - 2)')
$('li').not(':nth-child(3n- 2)')
这里3 “3N” 的将选择第三个元素,“ - 2”将选择带到第一个元素。
在广义形式
$('li:nth-child(3n - x)')
$('li').not(':nth-child(3n- x)')
这里x
正在变量以限定第一元件如前阐述。以上
感谢和问候,
Rk_Hirpara