Подтвердить что ты не робот

Напротив jQuery: eq()

Кто-нибудь знает, существует ли какой-то селектор для выбора элементов из сопоставленного набора, кроме того, который указан указанным индексом. Например:.

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

Предположим, что существует 5 элементов, последнее утверждение даст вам 4 и будет содержать все элементы <li>, а второе в DOM.

4b9b3361

Ответ 1

Используйте not:

$('li').not(':eq(2)');

Ответ 2

Другие ответы будут работать отлично, но в качестве альтернативы вы можете реализовать собственный пользовательский селектор для neq

$.extend($.expr[":"], {  
    neq: function(elem, i, match) {  
        return i !== (match[3] - 0);
    }  
});  

И тогда вы могли бы сделать то, что вы изначально предложили.

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

Хотя другая публикация предложила использовать .length вместо .size, что будет лучше, чем просто свойство, а не дополнительный вызов функции.

$("li:neq(2)").length;

Ответ 3

Хорошо, это просто

$("li:not(:eq(2))");

Ответ 4

Я бы использовал фильтр для такого случая,

$('li').filter(function (i, item) {
   return i != 2;
})

Ответ 5

В дополнение к пользовательскому селектору вы также можете реализовать это как плагин jQuery:

$.fn.neg = function (index) {
    return this.pushStack( this.not(':eq(' + index + ')') );
}