Nếu tôi thử một số nội dung như sau:Làm cách nào để kiểm tra xem 2 bộ chọn jQuery có trỏ đến cùng một phần tử không?
$(".foo") === $(".foo") // = false
... Tôi hiểu sai. Nếu thay vào đó, tôi thử truy vấn này,
$(".foo").get(0) === $(".foo").get(0) // = true
... Tôi nhận được sự thật.
Đó là bởi vì:
{a:myObject} !== {a:myObject};
[myObject] !== [myObject];
myObject === myObject;
Tôi đang tự hỏi nếu có bất kỳ cách nào ngắn gọn để kiểm tra sự bình đẳng này, tốt nhất là xây dựng thành jQuery. Phương pháp thứ 2 tôi đã viết chỉ hoạt động chính xác nếu có nhiều nhất một phần tử khớp với .foo
. Giải pháp sẽ hoạt động với bất kỳ lượng yếu tố nào.
Rõ ràng là tôi không muốn chỉ kiểm tra ".foo" === ".foo"
vì các lựa chọn thực tế mà tôi đang sử dụng phức tạp hơn. Tôi chỉ đơn giản hóa chúng cho ví dụ này. (Ví dụ: Tôi có thể muốn kiểm tra xem $(this)
là lựa chọn điều tương tự như $(".foo")
.)
Bạn nên kiểm tra câu trả lời benekastah của, đây là một bản demo phản ánh câu trả lời của mình: http://jsfiddle.net/kAv4X/ – MacMac
@lolwut: điều đó không làm việc kể từ 'là () 'chỉ kiểm tra rằng * ít nhất một * của các phần tử khớp với bộ chọn khác (nghĩa là nó là tập hợp con). Hãy xem: http://jsfiddle.net/dYAH3/ (nó nên nói sai trong cảnh báo đầu tiên, nhưng nó nói đúng). – Senseful
Câu trả lời này (http://stackoverflow.com/a/3856290/989121) có vẻ chính xác nhất. – georg