Kể từ jQuery 1.6, bạn có thể sử dụng .is
. Dưới đây là câu trả lời từ hơn một năm trước ...
var a = $('#foo');
var b = a;
if (a.is(b)) {
// the same object!
}
Nếu bạn muốn xem hai biến có thực sự là cùng một đối tượng hay không, vd:
var a = $('#foo');
var b = a;
... Sau đó bạn có thể kiểm tra ID duy nhất của họ. Mỗi khi bạn tạo một đối tượng jQuery mới, nó sẽ nhận được một id.
if ($.data(a) == $.data(b)) {
// the same object!
}
Mặc dù, điều tương tự có thể đạt được với một cách đơn giản a === b
, nhưng ở trên ít nhất có thể hiển thị cho nhà phát triển tiếp theo chính xác những gì bạn đang thử nghiệm.
Trong mọi trường hợp, đó có lẽ không phải là những gì bạn đang theo đuổi. Nếu bạn muốn kiểm tra xem hai đối tượng jQuery khác nhau có chứa cùng một bộ phần tử hay không, thì bạn có thể sử dụng điều này:
$.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;
};
Nguồn
var a = $('p');
var b = $('p');
if (a.equals(b)) {
// same set
}
A.selector === B.selector && A.context === B.context
. Thường thì bối cảnh sẽ luôn giống nhau, vì vậy chúng ta chỉ phải xem xét bộ chọn.