2013-03-04 62 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]