jQuery - 将.parent()与$('#id-name')

时间:2016-07-09 23:58:00

标签: javascript jquery

所以我想知道为什么与jQuery中的$(' #id')相比,元素的.parent()返回false。

我试图在我的代码的if语句中对它们进行比较,如下所示:

if ($navbar.parent() === $('#sticky-wrapper'))

它返回false,所以我只用简单的dom在控制台上做了一些进一步的测试,并提出了下面的输出:

> $('main')
< [<main class=​"main">​…​</main>​]

> $('body')
< [<body>​…​</body>​]

> $('main').parent()
< [<body>​…​</body>​]

> $('main').parent() === $('body')
< false

> $('main').parent() == $('body')
< false

这对我来说非常混乱,因为控制台中的输出显示相同。任何人都对每种方法提供的真实价值有任何想法吗?

非常感谢任何反馈。 :)

3 个答案:

答案 0 :(得分:5)

你不能真正比较像这样的jQuery对象,因为每个jQuery对象都是不同的。 jQuery对象引用的DOM元素可能与另一个相同,但根jQuery对象不会。它就像两个不同的杯子,包含相同类型的液体(或沿着这些线条的东西,也许两个不​​同的地图描绘了同一个大陆是一个更好的例子)。

你可以做的是通过jQuery来比较DOM元素,方法是使用getreference)获取DOM元素。

$('main').parent().get(0) === $('body').get(0) // true

..很像以下内容也将返回true

$('body').parent().get(0) === $('html').get(0) // true

答案 1 :(得分:1)

只需尝试这一点:
$('main').parent()[0] === $('body')[0]

甚至是$('main').parent().is($('body'));

答案 2 :(得分:0)

使用is()。清洁阅读,易于编写

if ($navbar.parent().is('#sticky-wrapper'))