jQuery: Wählen Sie alle Elemente einer bestimmten Klasse mit Ausnahme einer bestimmten ID aus


146

Das ist wahrscheinlich ziemlich einfach.

Ich möchte alle Elemente einer bestimmten Klasse auswählen thisClass, außer wo sich die ID befindet thisId.

dh etwas Äquivalentes zu (wobei - / minus das Entfernen impliziert):

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

Antworten:


290

Verwenden Sie den Selektor: not .

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

Wenn Sie mehrere IDs oder Selektoren haben, verwenden Sie einfach das Komma-Trennzeichen.

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


3
Was ist, wenn Sie mehr als eine Klasse ausschließen möchten? THX
SoulMagnet

13
Aus der Dokumentation: All selectors are accepted inside :not(), for example: :not(div a) and :not(div,a)Verwenden Sie also einfach die durch Kommas getrennten Selektoren, um mehrere (".thisclass:not(#thisid,#thatid)").doAction();
auszuführen

arbeitete mit einfachen Anführungszeichen wie diesem - $ (". thisclass: not ('# thisid')"). doAction ();
Muhammad Raja

oder wenn Sie an alle untergeordneten Elemente binden möchten, die einen bestimmten Klassennamen haben, mit Ausnahme eines, können Sie Folgendes tun: $ ('. thisclass: not (#id) .otherclass'). doAction ()
dalmate

Was ist, wenn ich einen Standardcode habe wie: $ ('# some'). notimportant, $ ('# some'). dosomethingelse und ich möchte die Ausführung über eine bestimmte ID vermeiden, die dynamisch angegeben wird?
Botea Florin


7

Sie können die .not- Funktion wie in den folgenden Beispielen verwenden, um Elemente mit einer genauen ID, einer ID, die ein bestimmtes Wort enthält, einer ID, die mit einem Wort beginnt, usw. zu entfernen. Siehe http://www.w3schools.com/jquery/jquery_ref_selectors Weitere Informationen zu jQuery-Selektoren finden Sie unter .asp .

Nach genauer ID ignorieren:

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

IDs ignorieren, die das Wort "Id" enthalten

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

IDs ignorieren, die mit "my" beginnen

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

6

Ich werde nur eine JS (ES6) Antwort einwerfen, falls jemand danach sucht:

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

Update (dies war möglicherweise möglich, als ich die ursprüngliche Antwort gepostet habe, füge diese aber trotzdem hinzu):

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

Dadurch wird die Array.fromVerwendung beseitigt.

document.querySelectorAllgibt a zurück NodeList.
Lesen Sie hier, um mehr darüber zu erfahren, wie Sie darauf (und auf andere Weise) iterieren können: https://developer.mozilla.org/en-US/docs/Web/API/NodeList



2

Die Verwendung der .not()Methode zur Auswahl eines gesamten Elements ist ebenfalls eine Option.

Diese Methode kann nützlich sein, wenn Sie eine andere Aktion direkt mit diesem Element ausführen möchten.

$(".thisClass").not($("#thisId")[0].doAnotherAction()).doAction();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.