Antworten:
Einfach:
$('div').not('#myid');
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:
$('div:not(#myid)');
Beide Selektoren machen dasselbe, sind jedoch :not()
schneller , vermutlich weil die Selektor-Engine von jQuery, Sizzle, sie in einen nativen .querySelectorAll()
Aufruf optimieren kann .
.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()
var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);
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 a NodeList
.
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 :(
.querySelector()
oder .querySelectorAll()
mit div:not(#myid)
schneller vielleicht ... Ist es?
$("div:not(#myid)")
oder
$("div").not("#myid")
sind Hauptmethoden, um alle bis auf eine ID auszuwählen
Sie können die Demo hier sehen
$("div:not(#myid)")
schneller ... Überprüfen Sie die Sizzlejs- Optimierung darauf, wenn Sie natives Javascript verwenden .querySelector()
oder .querySelectorAll()
.
Das sollte es tun:
$('div:not("#myid")')