JQuery: выбрать все элементы данного класса, кроме определенного идентификатора - PullRequest
137 голосов
/ 31 марта 2010

Это, наверное, довольно просто.

Я хочу выбрать все элементы данного класса thisClass, кроме идентификатора thisId.

т.е. что-то эквивалентное (где - / минус подразумевает удаление):

$(".thisClass"-"#thisId").doAction();

Ответы [ 6 ]

264 голосов
/ 31 марта 2010

Используйте : не селектор .

$(".thisclass:not(#thisid)").doAction();

Если у вас несколько идентификаторов или селекторов, просто используйте разделитель запятых, кроме того:

(".thisclass:not(#thisid,#thatid)").doAction();

29 голосов
/ 21 апреля 2014

Или возьмите метод .not ()

https://api.jquery.com/not/

$(".thisClass").not("#thisId").doAction();
6 голосов
/ 22 марта 2016

Я просто добавлю ответ JS (ES6), если кто-то его ищет:

Array.from(document.querySelectorAll(".myClass:not(#myId)")).forEach((el,i) => {
    doSomething(el);
}

Обновление (это могло быть возможно, когда я опубликовал исходный ответ, но все равно добавил его сейчас):

document.querySelectorAll(".myClass:not(#myId)").forEach((el,i) => {
    doSomething(el);
});

Это избавляет от использования Array.from.

document.querySelectorAll возвращает NodeList.
Прочитайте здесь, чтобы узнать больше о том, как итерировать на нем (и других вещах): https://developer.mozilla.org/en-US/docs/Web/API/NodeList

5 голосов
/ 31 марта 2010

$(".thisClass[id!='thisId']").doAction();

Документация по селекторам: http://api.jquery.com/category/selectors/

4 голосов
/ 22 марта 2016

Вы можете использовать функцию .not , как в следующих примерах, чтобы удалить элементы с точным идентификатором, идентификатором, содержащим определенное слово, идентификатором, начинающимся со слова и т. Д., См. http://www.w3schools.com/jquery/jquery_ref_selectors.asp для получения дополнительной информации о селекторах jQuery.

Игнорировать по точному идентификатору:

 $(".thisClass").not('[id="thisId"]').doAction();

Игнорировать идентификаторы, содержащие слово «Id»

$(".thisClass").not('[id*="Id"]').doAction();

Игнорировать идентификаторы, которые начинаются с "my"

$(".thisClass").not('[id^="my"]').doAction();
2 голосов
/ 17 марта 2016

Использование метода .not() с выбором всего элемента также является опцией.

Этот способ может быть полезен, если вы хотите выполнить другое действие непосредственно с этим элементом.

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...