与jQuery相反:eq()

时间:2012-08-21 14:36:32

标签: javascript jquery jquery-selectors

有没有人知道是否存在某种选择器来从匹配的集合中选择元素,但是由指示的索引给出的元素。 E.g:

$("li").neq(2).size();

假设有5个元素,最后一个语句将给你4个,并且将包含所有<li>个元素,但是包含DOM中的第二个元素。

5 个答案:

答案 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 + ')') );
}