私はこれが最初はうまくいくと思うでしょう:
if ($('#element') == $('#element')) alert('hello');
しかし、そうではありません。要素が同じかどうかをどのようにテストしますか?
回答:
jquery 1.6以降、次のことが簡単にできるようになりました。
$element1.is($element2)
これは機能するはずです:
if ($(this)[0] === $(this)[0]) alert('hello');
だからこれは
if (openActivity[0] == $(this)[0]) alert('hello');
$.is
あるいは単に
if (openActivity[0] == this) alert('hello');
(新しいjQueryインスタンスなし;-)
すでに誰かが言ったように、2つの異なる瞬間にラップされた同じHTML要素は2つの異なるjQueryインスタンスを生成するため、それらが等しくなることはありません。
代わりに、ラップされたHTML要素は、同じHTML要素である場合、それらが占めるメモリ位置が同じであるため、そのように比較できます。
var LIs = $('#myUL LI');
var $match = $('#myUL').find('LI:first');
alert(LIs.eq(0) === $match); // false
alert(LIs.get(0) === $match.get(0)) // TRUE! yeah :)
宜しくお願いします!
9年後、jQueryなし
2つの要素が同じものである場合、2つの要素は同じポインターを持っている必要があります。したがって、
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false