se provo qualcosa come questo:Come faccio a verificare se 2 selettori jQuery puntano agli stessi elementi?
$(".foo") === $(".foo") // = false
... ottengo falso. Se invece provo questa query,
$(".foo").get(0) === $(".foo").get(0) // = true
... Divento vero.
Questo perché:
{a:myObject} !== {a:myObject};
[myObject] !== [myObject];
myObject === myObject;
mi chiedo se non v'è alcun modo succinto per verificare questa uguaglianza, preferibilmente integrato in jQuery. Il secondo metodo che ho scritto funziona correttamente solo se al massimo c'è un elemento che corrisponde a .foo
. La soluzione dovrebbe funzionare per qualsiasi quantità di elementi.
Ovviamente non voglio solo controllare ".foo" === ".foo"
poiché le selezioni effettive che sto usando sono più complicate. Li ho semplicemente semplificati per questo esempio. (Ad esempio mi può essere utile per controllare che $(this)
sta selezionando la stessa cosa di $(".foo")
.)
Si dovrebbe verificare la risposta di benekastah, ecco una demo che riflette la sua risposta: http://jsfiddle.net/kAv4X/ – MacMac
@lolwut: che non funziona in quanto 'è () 'controlla solo che * almeno uno * degli elementi corrisponda all'altro selettore (cioè è un sottoinsieme). Dai un'occhiata a: http://jsfiddle.net/dYAH3/ (dovrebbe essere falso nel primo avviso, ma è vero). – Senseful
Questa [risposta] (http://stackoverflow.com/a/3856290/989121) sembra la più accurata. – georg