Ich kann (mit jQuery) alle Divs in einem HTML-Markup wie folgt auswählen:
$('div')
Aber ich möchte ein bestimmtes div
(sagen wir haben id="myid"
) von der obigen Auswahl ausschließen.
Wie kann ich dies mit Jquery-Funktionen tun?
javascript
jquery
jquery-selectors
siva636
quelle
quelle
Antworten:
Einfach:
Mit using
.not()
werden Elemente, die mit dem ihm zugewiesenen Selektor übereinstimmen, aus dem von zurückgegebenen Satz entfernt$('div')
.Sie können auch den
:not()
Selektor verwenden:Beide Selektoren machen dasselbe, sind jedoch
:not()
schneller , vermutlich weil die Selektor-Engine von jQuery, Sizzle, sie in einen nativen.querySelectorAll()
Aufruf optimieren kann .quelle
.not()
ist weitaus besser als:not()
.$('div:not(#myid)');
(ohne Anführungszeichen). @ Raynos: Warum?:not()
ist ein CSS3-Selektor. jQuery kann den Selektor direkt an übergeben,querySelectorAll
wenn er unterstützt wird ....not
und weniger lesbar. Ich hätte sagen sollen ": nicht Selektor in jQuery":not()
. Weder ist dieser Selektor neu für Selektoren 4, noch wurde er geändert, um Anführungszeichen zuzulassen. Es wurde jedoch geändert, um komplexere Selektoren zu ermöglichen. Es sei denn, ich habe Ihren Kommentar falsch verstanden ...querySelectorAll
als der schnellste markiert . Kein realer Benchmark, aber zu erwarten, da jQuery intern keinen Overhead verursacht.:not()
ist in der Tat schneller, vermutlich weil Sizzle weiß, dass es es für die Verwendung optimieren kannquerySelectorAll()
Sie könnten es einfach auf die altmodische Weise tun. Keine Notwendigkeit für jQuery mit etwas so Einfachem.
Profi-Tipps:
Eine Reihe von dom-Elementen ist nur ein Array. Verwenden Sie daher Ihre bevorzugte
toArray
Methode für aNodeList
.Das Hinzufügen von Elementen zu einer Menge ist gerecht
set.push.apply(set, arrOfElements);
Das Entfernen eines Elements aus einer Menge ist
set.splice(set.indexOf(el), 1)
Sie können nicht einfach mehrere Elemente gleichzeitig entfernen :(
quelle
.querySelector()
oder.querySelectorAll()
mitdiv:not(#myid)
schneller vielleicht ... Ist es?[doc]
oder
[doc]
sind Hauptmethoden, um alle bis auf eine ID auszuwählen
Sie können die Demo hier sehen
quelle
$("div:not(#myid)")
schneller ... Überprüfen Sie die Sizzlejs- Optimierung darauf, wenn Sie natives Javascript verwenden.querySelector()
oder.querySelectorAll()
.Dies schließt alle Divs außer dem mit der ID 'myid' ein.
quelle
Das ist was du brauchst, denke ich.
quelle
Das sollte es tun:
quelle
Sie verwenden die
.not
Eigenschaft der jQuery-Bibliothek:Sehen sie in Aktion hier . Das div #myDiv ist weiß.
quelle