有没有人知道是否存在某种选择器来从匹配的集合中选择元素,但是由指示的索引给出的元素。 E.g:
$("li").neq(2).size();
假设有5个元素,最后一个语句将给你4个,并且将包含所有<li>
个元素,但是包含DOM中的第二个元素。
答案 0 :(得分:68)
使用not
:
$('li').not(':eq(2)');
答案 1 :(得分:7)
好吧,这只是
$("li:not(:eq(2))");
答案 2 :(得分:6)
其他答案可以正常使用,但作为替代方案,您可以为neq
实现自己的自定义选择器
$.extend($.expr[":"], {
neq: function(elem, i, match) {
return i !== (match[3] - 0);
}
});
然后你可以做你最初建议的事情。
$("li:neq(2)").size();
虽然另一篇帖子建议使用.length
代替.size
,但这样做会更好,因为它只是一个属性而不是额外的函数调用。
$("li:neq(2)").length;
答案 3 :(得分:4)
我会在这种情况下使用过滤器,
$('li').filter(function (i, item) {
return i != 2;
})
答案 4 :(得分:0)
除了自定义选择器,您还可以将其实现为jQuery插件:
$.fn.neg = function (index) {
return this.pushStack( this.not(':eq(' + index + ')') );
}