Da jQuery 1.6, è possibile utilizzare .is
. Qui di seguito è la risposta da più di un anno fa ...
var a = $('#foo');
var b = a;
if (a.is(b)) {
// the same object!
}
Se volete vedere se due variabili sono in realtà lo stesso oggetto, ad esempio:
var a = $('#foo');
var b = a;
... poi si può controllare i loro ID univoci. Ogni volta che crei un nuovo oggetto jQuery ottiene un ID.
if ($.data(a) == $.data(b)) {
// the same object!
}
Anche se, lo stesso potrebbe essere raggiunto con una semplice a === b
, quanto sopra potrebbe almeno mostrano la prossima sviluppatore esattamente ciò che si sta testando per.
In ogni caso, probabilmente non è quello che cerchi. Se si voleva verificare se due diversi oggetti jQuery contengono lo stesso insieme di elementi, la si potrebbe usare questo:
$.fn.equals = function(compareTo) {
if (!compareTo || this.length != compareTo.length) {
return false;
}
for (var i = 0; i < this.length; ++i) {
if (this[i] !== compareTo[i]) {
return false;
}
}
return true;
};
Source metodo
var a = $('p');
var b = $('p');
if (a.equals(b)) {
// same set
}
Questa soluzione si semplifica a quella data da [thephpdeveloper] (http://stackoverflow.com/questions/3176962/jquery-object-equality/3176971#3176971) quando c'è un solo elemento . Un altro senso in cui gli oggetti jQuery possono essere considerati uguali è se hanno lo stesso selettore e il medesimo contesto. Questo è abbastanza facile da testare: 'A.selector === B.selector && A.context === B.context'. Spesso il contesto sarà sempre lo stesso, quindi dobbiamo solo considerare il selettore. – Casebash
@Casebash - true, tuttavia, considera che molti selettori potrebbero finire con lo stesso set di risultati, ad esempio: '$ (': first')' e '$ ('*: first')' – nickf
[Soluzione più piccola - usa $ (a) .è (b) '] (http://stackoverflow.com/q/2448362/9859). – rampion