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

理由はわかりませんが、「FOUND IT !」という警告メッセージが表示されません。

4

2 に答える 2

38

jQuery.is次の関数を使用できます。

現在一致している要素のセットをセレクター、要素、または jQuery オブジェクトに対してチェックし、これらの要素の少なくとも 1 つが指定された引数と一致する場合は 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 に答える