Was ich machen will; was ich vorhabe zu tun:
( clickedObject === someDiv ) //returns true or false
Was ich versucht habe
( $(e.target) === $('.selector') ); //returns a false negative.
Mein Workaround
( $(e.target).attr('class') === $('.selector').attr('class') ); //works as intended, not so clean though.
Wie kann ich das angeklickte Objekt mit einem Objekt im DOM vergleichen?
Um zu überprüfen, ob e.target
diese Klasse hat, können Sie die hasClass
-Funktion verwenden.
if ($(e.target).hasClass("selector"))
Wenn Sie Objekte wirklich vergleichen möchten, beachten Sie, dass jQuery-Selektoren eine Sammlung von Elementen zurückgeben. Ich denke, Sie möchten dies
if (e.target === $('.selector')[0])
Du bist nah dran Verwenden Sie stattdessen .is()
:
if($(e.target).is('.selector')) {
// Your code
}
Der Trick hier ist, dass Sie e.target
in ein jQuery-Objekt einschließen, damit es auf alle nützlichen jQuery-Methoden zugreifen kann.
Wenn Sie nur sehen, ob e.target
eine bestimmte Klasse hat, verwenden Sie .hasClass()
anstelle von .is()
:
if($(e.target).hasClass('selector')) {
// Your code
}
Beide Methoden funktionieren, obwohl .hasClass()
etwas klarer ist, was der Code bewirkt, und ist schneller als .is()
.
Natürlich ist die Funktion .is()
die beste Lösung.
Wenn Sie einen solchen Vergleich durchführen, versuchen Sie zu prüfen, ob eingebettete jQuery-Mechanismen wie folgt verwendet werden können:
$(element).on("click", ".selector", function() {
alert("clicked");
});
Das zweite Argument in der .on()
-Methode ist ein Zielselektor. Bei Verwendung dieser Konstruktion (mehr dazu: http://api.jquery.com/on/#direct-and-delegated-events ) sind keine weiteren Vergleiche erforderlich.
Wenn Sie das Element, an das das Ereignis angehängt ist, abgleichen möchten, können Sie $(this)
verwenden. Wenn Sie ermitteln möchten, welches Element das Ereignis ausgelöst hat, verwenden Sie $(event.target)
.
Nachfolgend finden Sie ein Beispiel für beide.
http://jsfiddle.net/Phunky/TbJef/
Wenn Sie keine Ereignisdelegation verwenden, sind diese jedoch gleich und wenn dasselbe Element vorhanden ist.