it-swarm.com.de

Vergleichen Sie 'e.target' mit einem jQuery-Objekt

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?

35
dubbelj

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])
37
Adam Rackis

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().

30
Bojangles

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.

https://jsfiddle.net/m5zysufy/

0
luke

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.

0
Phunky