所以我想知道为什么与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
这对我来说非常混乱,因为控制台中的输出显示相同。任何人都对每种方法提供的真实价值有任何想法吗?
非常感谢任何反馈。 :)
答案 0 :(得分:5)
你不能真正比较像这样的jQuery对象,因为每个jQuery对象都是不同的。 jQuery对象引用的DOM元素可能与另一个相同,但根jQuery对象不会。它就像两个不同的杯子,包含相同类型的液体(或沿着这些线条的东西,也许两个不同的地图描绘了同一个大陆是一个更好的例子)。
你可以做的是通过jQuery来比较DOM元素,方法是使用get
(reference)获取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'))