16

点击一个元素:

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

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

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

我不知道为什么,但我没有收到警报消息“找到它!”。

4

2 回答 2

38

您可以使用以下jQuery.is功能:

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

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

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

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

jsFiddle 演示

于 2013-03-04T08:39:18.383 回答
3

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

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

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

selected_object.[0] == current_object.[0]
于 2016-01-24T23:49:27.970 回答