2013-03-04 24 views
10

Nhấp vào một yếu tố:jQuery so sánh hai đối tượng DOM?

$('.my_list').click(function(){ 
    var selected_object = $(this); 

    $('.my_list').each(function(){ 
     var current_object = $(this); 

     if(selected_object == current_object) alert('FOUND IT !'); 
    }); 
}); 

Tôi không biết tại sao, nhưng tôi không nhận được thông báo cảnh báo "tìm thấy nó!".

+0

hãy thử sử dụng === và xem –

Trả lời

31

Bạn có thể sử dụng jQuery.is chức năng:

Kiểm tra các thiết lập phù hợp với hiện tại của các yếu tố chống lại một chọn, phần tử, hoặc đối tượng jQuery và trả về true nếu ít nhất một trong các yếu tố này phù hợp với lập luận đưa ra.

if (selected_object.is(current_object)) { 
    ...  
} 

Một giải pháp thay thế là sử dụng jQuery.get chức năng để có được các yếu tố thô và so sánh chúng bằng cách sử == hoặc === điều hành:

if (selected_object.get(0) == current_object.get(0)) { 
    ... 
} 

jsFiddle demo

3

Có câu trả lời tốt được cung cấp ... nhưng điều quan trọng là phải hiểu, tại sao bạn trực tiếp không thể so sánh các bộ chọn trong jQuery.

Bộ chọn jQuery trả lại cấu trúc dữ liệu sẽ không bao giờ bằng theo nghĩa bình đẳng tham chiếu. Vì vậy, cách duy nhất để tìm ra điều này là lấy DOM tham chiếu từ đối tượng jQuery và so sánh các phần tử DOM.

Việc so sánh đơn giản nhất của DOM tài liệu tham khảo cho các ví dụ trên sẽ là:

selected_object.[0] == current_object.[0]