<div class="fuu">
...
</div>
<div class="fuu no">
...
</div>
...
Wie kann ich alle fuu
außer denen auswählen , die die .no
Klasse haben?
Antworten:
Verwenden Sie :not()
diese Option, um die andere Klasse auszuschließen:
$('.fuu:not(.no)')
$("#mydiv .fuu:not(.no)").click(function(){console.log('test');});
. Ich habe lange nach einem Problem gesucht not()
, das damit zusammenhängt. Schließlich lag es einfach daran, dass die active
Klasse dynamisch hinzugefügt wurde. Ich musste es so machen : $("#mydiv").on('click', '.fuu:not(.no)', function(){console.log('test');});
. Da ich hier weiter herumgegraben habe und dachte, dass not()
es nicht funktioniert, dachte ich, ein Kommentar hier könnte anderen helfen.
$('.aaa:not(.bbb):not(.ccc)')
. Das wird alles bekommen, was Klasse hat, aaa
aber keine Klasse bbb
oder ccc
Holen Sie sich den Klassennamen des Div. Wenn der Klassenname ein Leerzeichen enthält, bedeutet dies, dass es mehr als eine Klasse hat!
<div class="fuu yes">
? Es hat keine no
Klasse, aber es würde false für zurückgeben .attr('class') == 'fuu'
.
.fuu:not(.no)
ist auch ein gültiger CSS3-Selektor und entspricht den gleichen Elementen in Browsern, die dies unterstützen:not()
. Daher glaube ich, dass jQuery diesen Selektor übergeben wird,querySelectorAll()
anstatt sich für diese Browser auf Sizzle zu verlassen, wodurch die Leistung in diesen Browsern verbessert wird. Natürlich interessiert es niemanden :)