我怀疑这首先要起作用:
if ($('#element') == $('#element')) alert('hello');
但事实并非如此。如何测试元素是否相同?
答案 0 :(得分:124)
从jquery 1.6开始,你现在可以做到:
$element1.is($element2)
答案 1 :(得分:74)
这应该有效:
if ($(this)[0] === $(this)[0]) alert('hello');
所以这个
if (openActivity[0] == $(this)[0]) alert('hello');
答案 2 :(得分:14)
或者只是
if (openActivity[0] == this) alert('hello');
(没有新的jQuery实例; - )
答案 3 :(得分:12)
正如有人已经说过的那样,包含在两个不同时刻的相同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 :)
祝你好运!
答案 4 :(得分:5)
我会使用addClass()来标记打开,你可以轻松地检查它。
答案 5 :(得分:1)
9年后,没有jQuery
如果两个元素相同,则两个元素必须具有相同的指针。 因此,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
答案 6 :(得分:0)
像丝滑或桑蒂所说,一个独特的ID或类将是最容易测试的方法。你的if语句不能像你期望的那样工作的原因是因为它正在比较2个对象并查看它们是否是内存中的同一个对象。
因为它总是由$(this)创建的新对象,所以它们永远不会相互平等。这就是为什么你必须测试对象的属性。如果每个openActivity元素都保证有不同的内容可以测试,那么你可以没有唯一的id / class。