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 !'); }); }); 

我不知道为什么,但我没有得到警告信息“发现它!”。

您可以使用jQuery.is函数:

根据选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true。

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

另一种解决方案是使用jQuery.get函数获取原始元素并使用=====运算符进行比较:

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

jsFiddle演示

提供了很好的答案……但重要的是理解,为什么你不能直接比较jQuery中的选择器。

jQuery选择器返回的数据结构在引用相等的意义上永远不会相等。 因此,解决这个问题的唯一方法是从jQuery对象获取DOM引用并比较DOM元素。

上面示例中DOM引用的最简单比较是:

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