2013-03-04 16 views
10

Ein Klick auf ein Element:jQuery zwei DOM-Objekte vergleichen?

$('.my_list').click(function(){ 
    var selected_object = $(this); 

    $('.my_list').each(function(){ 
     var current_object = $(this); 

     if(selected_object == current_object) alert('FOUND IT !'); 
    }); 
}); 

Ich weiß nicht, warum, aber ich die Warnmeldung nicht bekommen „es gefunden!“.

+0

versuchen === und sieht –

Antwort

31

können Sie verwenden, um die jQuery.is Funktion:

Überprüfen Sie die aktuelle aufeinander abgestimmten Satz von Elementen gegen einen Selektor, Element, oder jQuery-Objekt und gibt true zurück, wenn mindestens eines dieser Elemente die angegebenen Argumente übereinstimmt.

if (selected_object.is(current_object)) { 
    ...  
} 

Eine alternative Lösung ist jQuery.get Funktion zu verwenden, um die rohen Elemente zu erhalten und vergleichen sie mit == oder === Betreiber:

if (selected_object.get(0) == current_object.get(0)) { 
    ... 
} 

jsFiddle demo

3

Es gibt gute Antwort gegeben ... aber es ist wichtig zu verstehen, warum Sie Selektoren in jQuery nicht direkt vergleichen können.

jQuery Selektoren zurück Datenstrukturen, die nie gleich im Sinne der Referenzgleichheit sein wird. Die einzige Möglichkeit, dies herauszufinden, besteht darin, DOM-Referenzen vom jQuery-Objekt abzurufen und DOM-Elemente zu vergleichen.

wäre der einfachste Vergleich der DOM-Referenz für das obige Beispiel sein: mit

selected_object.[0] == current_object.[0]