2013-03-04 2 views
10

Facendo clic su un elemento:jQuery confronta due oggetti DOM?

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

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

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

non so perché, ma non ho ricevuto il messaggio di avviso "trovato!".

+0

provare a utilizzare === e vedere –

risposta

31

È possibile utilizzare la funzione jQuery.is:

Controllare l'attuale unico set di elementi nei confronti di un selettore, elemento, o oggetto jQuery e restituire true se almeno uno di questi elementi partite gli argomenti dati.

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

Una soluzione alternativa è quella di utilizzare jQuery.get funzione per ottenere gli elementi grezzi e confrontarli con == o === operatore:

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

jsFiddle demo

3

C'è una buona risposta fornita ... ma è importante capire perché non puoi confrontare direttamente i selettori in jQuery.

jQuery selettori restituiscono strutture dati che non saranno mai uguali nel senso di uguaglianza di riferimento. Quindi l'unico modo per capirlo è ottenere il riferimento DOM dall'oggetto jQuery e confrontare gli elementi DOM.

Il confronto più semplice di riferimento DOM per l'esempio di cui sopra sarebbe:

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