Seit jQuery 1.6 können Sie verwenden .is
. Unten ist die Antwort von vor über einem Jahr ...
var a = $('#foo');
var b = a;
if (a.is(b)) {
// the same object!
}
Wenn Sie sehen möchten, ob zwei Variablen tatsächlich dasselbe Objekt sind, z.
var a = $('#foo');
var b = a;
... dann können Sie ihre eindeutigen IDs überprüfen. Jedes Mal, wenn Sie ein neues jQuery-Objekt erstellen, erhält es eine ID.
if ($.data(a) == $.data(b)) {
// the same object!
}
Obwohl das gleiche mit einem einfachen a === b
erreicht werden könnte, könnte das Obige zumindest dem nächsten Entwickler genau zeigen, worauf Sie testen.
Auf jeden Fall ist das wahrscheinlich nicht das, wonach Sie suchen. Wenn Sie überprüfen möchten, ob zwei verschiedene jQuery-Objekte denselben Satz von Elementen enthalten, können Sie Folgendes verwenden:
$.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;
};
Quelle
var a = $('p');
var b = $('p');
if (a.equals(b)) {
// same set
}
A.selector === B.selector && A.context === B.context
. Oft ist der Kontext immer der gleiche, daher müssen wir nur den Selektor berücksichtigen.