jQuery: sélectionnez tous les éléments d'une classe donnée, à l'exception d'un identifiant particulier


146

C'est probablement assez simple.

Je veux sélectionner tous les éléments d'une classe donnée thisClass, sauf là où se trouve l'identifiant thisId.

c'est-à-dire quelque chose d'équivalent à (où - / moins implique supprimer):

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

Réponses:


290

Utilisez le sélecteur: not .

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

Si vous avez plusieurs identifiants ou sélecteurs, utilisez simplement le séparateur virgule, en plus:

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


3
Que faire si vous souhaitez exclure plusieurs classes? THX
SoulMagnet

13
De la documentation: All selectors are accepted inside :not(), for example: :not(div a) and :not(div,a)utilisez simplement les sélecteurs délimités par des virgules pour faire plusieurs(".thisclass:not(#thisid,#thatid)").doAction();
Chase

a travaillé avec des guillemets simples comme ceci - $ (". thisclass: not ('# thisid')"). doAction ();
Muhammad Raja

ou si vous voulez vous lier à tous les enfants des éléments qui ont un nom de classe spécifique, sauf un, vous pouvez faire comme ceci: $ ('. thisclass: not (#id) .otherclass'). doAction ()
dalmate

et si j'ai un code standard comme: $ ('# some'). notimportant, $ ('# another'). dosomethingelse et que je veux éviter l'exécution sur un identifiant spécifique donné dynamiquement?
Botea Florin

29

Ou prenez la méthode .not ()

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

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

3
.not()n'est pas un sélecteur. C'est une fonction. Mais il y a aussi un :not()sélecteur comme d'autres mentions de réponse.
WoIIe

7

Vous pouvez utiliser la fonction .not comme les exemples suivants pour supprimer les éléments qui ont un identifiant exact, un identifiant contenant un mot spécifique, un identifiant commençant par un mot, etc ... voir http://www.w3schools.com/jquery/jquery_ref_selectors .asp pour plus d'informations sur les sélecteurs jQuery.

Ignorer par ID exact:

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

Ignorer les ID contenant le mot «Id»

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

Ignorer les identifiants commençant par "mon"

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

6

Je vais simplement ajouter une réponse JS (ES6), au cas où quelqu'un la chercherait:

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

Mise à jour (cela a peut-être été possible lorsque j'ai publié la réponse originale, mais en l'ajoutant quand même):

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

Cela supprime l' Array.fromutilisation.

document.querySelectorAllrenvoie un NodeList.
Lisez ici pour en savoir plus sur la façon d'itérer dessus (et d'autres choses): https://developer.mozilla.org/en-US/docs/Web/API/NodeList



2

Utiliser la .not()méthode avec la sélection d'un élément entier est également une option.

Cette méthode peut être utile si vous souhaitez effectuer une autre action directement avec cet élément.

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.