Я могу выбрать (используя jQuery) все div в HTML-разметке следующим образом:
$('div')
Но я хочу исключить конкретный div
(например, имеющий id="myid"
) из приведенного выше выбора.
Как это сделать, используя функции JQuery?
Я могу выбрать (используя jQuery) все div в HTML-разметке следующим образом:
$('div')
Но я хочу исключить конкретный div
(например, имеющий id="myid"
) из приведенного выше выбора.
Как это сделать, используя функции JQuery?
Простой:
$('div').not('#myid');
Используя .not()
удалят элементы, соответствующие выбранному ему селектору из набора, возвращаемого $('div')
.
Вы также можете использовать селектор :not()
:
$('div:not(#myid)');
Оба селектора выполняют одно и то же, однако :not()
быстрее, предположительно потому, что механизм селектора jQuery Sizzle может оптимизировать его в native .querySelectorAll()
вызов.
var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);
Вы могли бы просто сделать это старомодным способом. Нет необходимости в jQuery с чем-то настолько простым.
Советы профессионала:
Набор элементов dom - это просто массив, поэтому используйте ваш любимый метод toArray
на NodeList
.
Добавление элементов в набор просто
set.push.apply(set, arrOfElements);
Удаление элемента из набора
set.splice(set.indexOf(el), 1)
Вы не можете легко удалить сразу несколько элементов: (
$("div:not(#myid)")
или
$("div").not("#myid")
- основные способы выбора всех, кроме одного id
Здесь вы можете увидеть демо
var elements = $('div').not('#myid');
Это будет включать все div, кроме одного с id 'myid'
$('div:not(#myid)');
вот что вам нужно, я думаю.
Это должно сделать это:
$('div:not("#myid")')
Вы используете свойство .not
библиотеки jQuery:
$('div').not('#myDiv').css('background-color', '#000000');
Смотрите в действии здесь. Div #myDiv будет белым.