Frage "Alle aber nicht" jQuery-Selektor


Ich kann (mit jQuery) alle Divs in einem HTML-Markup wie folgt auswählen:

$('div')

Aber ich möchte ein bestimmtes ausschließen div (Sagen wir haben id="myid") aus der obigen Auswahl.

Wie kann ich dies mit Jquery-Funktionen tun?


70
2017-10-29 10:21


Ursprung


Antworten:


Einfach:

$('div').not('#myid');

Verwenden .not() entfernt Elemente, die mit dem Selektor übereinstimmen, der von der Menge zurückgegeben wurde, die von zurückgegeben wird $('div').

Sie können auch die :not() Wähler:

$('div:not(#myid)');

Beide Selektoren tun dasselbe :not() ist schneller, vermutlich weil jQuerys Selector-Engine Sizzle es zu einem nativen optimieren kann .querySelectorAll() Anruf.


135
2017-10-29 10:23



var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);

Du könntest es einfach auf altmodische Weise tun. Keine Notwendigkeit für jQuery mit etwas so einfach.

Profi-Tipps:

Eine Reihe von dom-Elementen ist nur ein Array, verwenden Sie also Ihren Favoriten toArray Methode auf a NodeList.

Hinzufügen von Elementen zu einem Set ist nur

set.push.apply(set, arrOfElements);

Entfernen eines Elements aus einer Menge ist

set.splice(set.indexOf(el), 1)

Sie können nicht einfach mehrere Elemente auf einmal entfernen :(


9
2017-10-29 10:33



$("div:not(#myid)")

[doc]

oder

$("div").not("#myid")

[doc]

sind die wichtigsten Möglichkeiten, alle bis auf eine ID auszuwählen

Du kannst sehen Demo hier


5
2017-10-29 10:24



   var elements =  $('div').not('#myid');

Dies schließt alle divs ein, außer dem mit id 'myid'


4
2017-10-29 10:23



$('div:not(#myid)');

das ist, was du brauchst, denke ich.


3
2017-10-29 10:24



Das sollte es tun:

$('div:not("#myid")')

3
2017-10-29 10:25



Du benutzt das .not Eigenschaft der jQuery-Bibliothek:

$('div').not('#myDiv').css('background-color', '#000000');

Sehen Sie es in Aktion Hier. Das div #myDiv wird weiß sein.


3
2017-10-29 10:27