2016-07-09 81 views
0

所以我想知道爲什麼與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 

這對我來說非常混亂,因爲輸出在控制檯中看起來是一樣的。任何人都知道每種方法提供的真實價值?

任何反饋將不勝感激。 :)

回答

5

你真的無法比擬的jQuery對象這樣的,因爲每個jQuery對象是不同的。 jQuery對象引用的DOM元素可能與另一個相同,但根jQuery對象不會。就像兩個不同的杯子含有相同類型的液體(或沿着這些線條的東西,也許兩個不​​同的地圖描繪同一個大陸是一個更好的例子)。

你可以做的是通過獲取DOM元素與getreference)通過jQuery比較DOM元素。

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

..much像下面也將返回true

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

只是試試這個來代替:
$('main').parent()[0] === $('body')[0]

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

0

使用is()。易讀易讀

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