Desde jQuery 1.6, puede usar .is
. A continuación se muestra la respuesta de hace más de un año ...
var a = $('#foo');
var b = a;
if (a.is(b)) {
// the same object!
}
Si usted quiere ver si dos variables son en realidad el mismo objeto, por ejemplo:
var a = $('#foo');
var b = a;
... entonces puede verificar sus identificaciones únicas. Cada vez que creas un nuevo objeto jQuery obtiene una identificación.
if ($.data(a) == $.data(b)) {
// the same object!
}
Sin embargo, el mismo se podría lograr con un simple a === b
, el poder por encima de al menos muestran la próxima desarrollador exactamente lo que está probando para.
En cualquier caso, eso probablemente no sea lo que buscas. Si quería comprobar si dos objetos jQuery diferentes contienen el mismo conjunto de elementos, el que podría utilizar esto:
$.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 método
var a = $('p');
var b = $('p');
if (a.equals(b)) {
// same set
}
Esta solución simplifica a la dada por [thephpdeveloper] (http://stackoverflow.com/questions/3176962/jquery-object-equality/3176971#3176971) cuando sólo hay un único elemento . Otro sentido en el que los objetos jQuery se pueden considerar iguales es si tienen el mismo selector y el mismo contexto. Esto es bastante fácil de probar: 'A.selector === B.selector && A.context === B.context'. A menudo, el contexto siempre será el mismo, por lo que solo tenemos que considerar el selector. – Casebash
@Casebash - cierto, sin embargo considera que varios selectores podría terminar con el mismo conjunto de resultados, por ejemplo: '$ (': first')' y '$ ('*: first')' – nickf
[solución más pequeño - $ usar ' (a) .is (b) '] (http://stackoverflow.com/q/2448362/9859). – rampion