ตั้งแต่ jQuery 1.6 คุณสามารถ.is
ใช้ได้ ด้านล่างเป็นคำตอบจากเมื่อปีที่แล้ว ...
var a = $('#foo');
var b = a;
if (a.is(b)) {
// the same object!
}
หากคุณต้องการดูว่าตัวแปรสองตัวเป็นวัตถุเดียวกันจริงหรือไม่เช่น:
var a = $('#foo');
var b = a;
... จากนั้นคุณสามารถตรวจสอบ ID ที่ไม่ซ้ำกันได้ ทุกครั้งที่คุณสร้างวัตถุ jQuery ใหม่มันจะได้รับรหัส
if ($.data(a) == $.data(b)) {
// the same object!
}
แม้ว่าสิ่งเดียวกันนี้สามารถทำได้ด้วยวิธีง่ายๆa === b
แต่อย่างน้อยข้างต้นอาจแสดงนักพัฒนาคนต่อไปว่าคุณกำลังทดสอบอะไรอยู่
ไม่ว่าในกรณีใดนั่นอาจไม่ใช่สิ่งที่คุณต้องการ หากคุณต้องการตรวจสอบว่าวัตถุ jQuery ที่แตกต่างกันสองชุดมีองค์ประกอบชุดเดียวกันหรือไม่คุณสามารถใช้สิ่งนี้:
$.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;
};
แหล่ง
var a = $('p');
var b = $('p');
if (a.equals(b)) {
// same set
}
A.selector === B.selector && A.context === B.context
นี้จะเพียงพอที่ง่ายต่อการทดสอบ: บ่อยครั้งที่บริบทจะเหมือนกันเสมอดังนั้นเราจึงต้องพิจารณาตัวเลือกเท่านั้น