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

我不知道为什么,但是我没有收到提示信息"FOUND IT !"

您可以使用jQuery.is函数:

根据选择器、元素、或jQuery对象,如果其中至少有一个元素,则返回true匹配给定的参数。

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

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

if (selected_object.get(0) == current_object.get(0)) {
   ...
}
<<p> jsFiddle演示/strong>

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

jQuery选择器返回的数据结构在引用相等的意义上永远不会等于。因此,解决这个问题的唯一方法是从jQuery对象中获取DOM引用并比较DOM元素。 对于上面的例子,最简单的DOM引用比较是:
selected_object.[0] == current_object.[0]

最新更新