2013-03-04 126 views
10

單擊元素上:jQuery比較兩個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 !'); 
    }); 
}); 

我不知道爲什麼,但我沒有得到警告信息「找到了!」。

+0

嘗試使用===和看 – 2013-03-04 08:41:01

回答

31

可以使用jQuery.is功能:

檢查當前匹配的一套對選擇,元素, 或jQuery對象的元素,如果這些元素 給定的參數相匹配的至少一個返回true。

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

另一種解決方案是使用jQuery.get函數來獲取原始的元素,並使用它們進行比較=====操作:

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

jsFiddle demo

3

有提供很好的答案...但重要的是要明白,爲什麼你直接無法比較jQuery中的選擇器。

jQuery選擇器返回從參考相等意義上來說,永遠不會等於的數據結構。所以解決這個問題的唯一方法是從jQuery對象獲取DOM引用並比較DOM元素。

的DOM參考對於上面的例子中,最簡單的比較將是:

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