确保两个项目是JS / jQuery中的兄弟

时间:2012-02-20 14:53:54

标签: javascript jquery parent siblings

给出以下HTML结构:

<div class="wrap">
    <div id="a"></div>
    <div id="b"></div>
</div>

以下是假的:

($('#a').parent() == $('#b').parent()); //=> false

即使:

$('#a').parent().children('#b').length; //=> 1

有人可以解释为什么吗?谢谢!

2 个答案:

答案 0 :(得分:6)

我不是100%确切地知道它为什么不起作用,但我相信这是因为元素包装在jQuery对象中,每个元素本身就不同。

作为一种解决方法,您可以比较本机DOM对象,如下所示:

($('#a').parent()[0] == $('#b').parent()[0]); // true

Example fiddle

答案 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'));