给出以下HTML结构:
<div class="wrap">
<div id="a"></div>
<div id="b"></div>
</div>
以下是假的:
($('#a').parent() == $('#b').parent()); //=> false
即使:
$('#a').parent().children('#b').length; //=> 1
有人可以解释为什么吗?谢谢!
答案 0 :(得分:6)
我不是100%确切地知道它为什么不起作用,但我相信这是因为元素包装在jQuery对象中,每个元素本身就不同。
作为一种解决方法,您可以比较本机DOM对象,如下所示:
($('#a').parent()[0] == $('#b').parent()[0]); // true
答案 1 :(得分:3)
由于$('#a) == $('#a')
为false
每次jQuery构建一组元素时,它都会返回一个 new 对象(即使jQuery对象包含与另一个元素相同的元素)。在JavaScript中,仅时间对象等于另一个对象,如果它是完全相同的对象;
var a = {
foo: 1
};
var b = {
foo: 1
};
(a == b) // false;
要解决此问题,您可以直接比较DOM对象(使用.get(i)
或使用jQuery对象,如数组([i]
)),或者使用{{3}方法;
if ($('.foo').get(i) == $('.bar').get(i));
if ($('.foo')[0] == $('.bar')[0]);
if ($('.foo').is($('.bar')); // or even...
if ($('.foo').is('.bar'));