Verifica se due elementi sono uguali


87

All'inizio sospetto che funzioni:

if ($('#element') == $('#element')) alert('hello');

Ma non è così. Come si verifica se gli elementi sono gli stessi?

Risposte:


138

A partire da jquery 1.6 ora puoi semplicemente fare:

$element1.is($element2)

7
Questa è la migliore risposta per tutte le versioni recenti di Jquery.
Chris Jaynes

Un altro che vorrei poter votare a favore ogni volta che finisco per cercare su Google la stessa domanda e trovare questa risposta
freefaller

75

Questo dovrebbe funzionare:

if ($(this)[0] === $(this)[0]) alert('hello');

così dovrebbe questo

if (openActivity[0] == $(this)[0]) alert('hello');

3
Il tuo secondo esempio non dovrebbe essere === e non ==, per rispecchiare correttamente il tuo primo esempio?
Prusprus

3
Questa risposta potrebbe essere corretta nelle versioni precedenti di jquery, ma la maggior parte delle persone probabilmente utilizza una versione che supporta$.is
Chris Jaynes

14

O semplicemente

if (openActivity[0] == this) alert('hello');

(senza una nuova istanza jQuery ;-)


12

Come qualcuno ha già detto, lo stesso elemento HTML avvolto in due momenti diversi genera due diverse istanze di jQuery, quindi non possono mai essere uguali.

Invece, gli elementi HTML inseriti nel wrapping possono essere confrontati in questo modo, poiché la posizione di memoria che occupano è la stessa se è lo stesso elemento HTML, quindi:

var LIs = $('#myUL LI');
var $match = $('#myUL').find('LI:first');

alert(LIs.eq(0) === $match); // false
alert(LIs.get(0) === $match.get(0)) // TRUE! yeah :)

I migliori saluti!


5

Vorrei usare addClass () per contrassegnare l'apertura e puoi verificarlo facilmente.


3

9 anni dopo, senza jQuery

Se due elementi sono lo stesso, due elementi devono avere lo stesso puntatore. Quindi,

document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false

0

Come Silky o Santi ha detto, un ID o una classe univoci sarebbe il modo più semplice per testare. Il motivo per cui le tue istruzioni if ​​non funzionano come ti aspetteresti è perché stanno confrontando 2 oggetti e vedendo se sono lo stesso oggetto in memoria.

Poiché è sempre un nuovo oggetto creato da $ (this), non possono mai essere uguali tra loro. Ecco perché devi testare su una proprietà dell'oggetto. Potresti cavartela senza un ID / classe univoco se ogni elemento openActivity fosse garantito per avere contenuti diversi su cui potresti testare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.