testing两个元素是否相同

我会首先怀疑这个工作:

if ($('#element') == $('#element')) alert('hello'); 

但事实并非如此。 如何testing元素是否相同?

从jquery 1.6开始,你现在可以简单地做:

 $element1.is($element2) 

这应该工作:

 if ($(this)[0] === $(this)[0]) alert('hello'); 

所以应该这样

 if (openActivity[0] == $(this)[0]) alert('hello'); 

要不就

 if (openActivity[0] == this) alert('hello'); 

(没有新的jQuery实例;-)

正如有人已经告诉过的,在两个不同的时刻包装的同一个HTML元素会生成两个不同的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 :) 

最好的祝福!

我会使用addClass()标记打开,你可以很容易地检查。

像柔滑或桑迪说,一个独特的ID或类将是最简单的方法来testing。 你的if语句不能像你所期望的那样工作的原因是因为它比较了两个对象,看看它们是否是内存中的同一个对象。

由于它总是由$(this)创build的新对象,所以它们永远不可能相互平等。 这就是为什么你必须testing对象的属性。 如果每个openActivity元素都保证可以testing不同的内容,那么您可以不使用唯一的id / class。