Ответ 1
Используйте not
:
$('li').not(':eq(2)');
Кто-нибудь знает, существует ли какой-то селектор для выбора элементов из сопоставленного набора, кроме того, который указан указанным индексом. Например:.
$("li").neq(2).size();
Предположим, что существует 5 элементов, последнее утверждение даст вам 4 и будет содержать все элементы <li>
, а второе в DOM.
Используйте not
:
$('li').not(':eq(2)');
Другие ответы будут работать отлично, но в качестве альтернативы вы можете реализовать собственный пользовательский селектор для neq
$.extend($.expr[":"], {
neq: function(elem, i, match) {
return i !== (match[3] - 0);
}
});
И тогда вы могли бы сделать то, что вы изначально предложили.
$("li:neq(2)").size();
Хотя другая публикация предложила использовать .length
вместо .size
, что будет лучше, чем просто свойство, а не дополнительный вызов функции.
$("li:neq(2)").length;
Хорошо, это просто
$("li:not(:eq(2))");
Я бы использовал фильтр для такого случая,
$('li').filter(function (i, item) {
return i != 2;
})
В дополнение к пользовательскому селектору вы также можете реализовать это как плагин jQuery:
$.fn.neg = function (index) {
return this.pushStack( this.not(':eq(' + index + ')') );
}