web-dev-qa-db-fra.com

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

C'est probablement assez simple.

Je veux sélectionner tous les éléments d'une classe donnée thisClass, sauf où l'id est thisId.

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

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

Utilisez le : pas le sélecteur .

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

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

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

268
rahul

Ou bien prenez la méthode .not ()

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

$(".thisClass").not("#thisId").doAction();
29
Karl Adler

Je vais juste 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 posté la réponse originale, mais en l'ajoutant maintenant):

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

Cela supprime le Array.from utilisation.

document.querySelectorAll renvoie un NodeList.
Lisez ici pour en savoir plus sur la façon d’y parcourir (et d’autres choses): https://developer.mozilla.org/en-US/docs/Web/API/NodeList

6
Jayant Bhawal

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

Documentation sur les sélecteurs: http://api.jquery.com/category/selectors/

5
Amy B

Vous pouvez utiliser la fonction . Not comme dans les exemples suivants pour supprimer les éléments ayant 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 identifiants contenant le mot "Id"

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

Ignorer les identifiants commençant par "mon"

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

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

Cette façon de faire pourrait être utile si vous souhaitez effectuer directement une autre action avec cet élément.

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();
2
NiZa