2014-10-06 66 views
1

只是一個小的難題,爲什麼會...

$(document).ready(function(){ 
if ($("body").find(".bogusCrap")) { 
     alert("FOUND bogusCrap"); 
} 

}) 

...返回true?

以下檢查工作如同預期:

$(".bogusCrap").length > 0 

作品如預期

+1

'if({}){alert('All objects are truthy。'); ''。 $(「body」)。find(「.bogusCrap」).length> 0'按預期工作,以及順便說一句。 – 2014-10-06 15:28:05

+0

-1因爲你可以通過花一分鐘查找[文檔](http://api.jquery.com/find/)來找到自己的答案,然後你會看到'.find()'確實不要簡單地返回一個布爾值。 – Stijn 2014-10-06 15:29:29

+0

'~~ $()=== true' – Alnitak 2014-10-06 15:30:37

回答

3

$("body").find(".bogusCrap")返回一個空數組狀物體。對象,即使在空的時候,也不是,而是的值,它們是truthy的值。這意味着簡單來說,一個空對象(或一個空數組)等於true

你可以自己嘗試一下:

if ([]) 
    alert("True"); 

if ({}) 
    alert("True"); 

正如費利克斯·克林在下面的評論中指出,$("body").find(".bogusCrap")實際上返回一個jQuery object,但我所說的上面仍然適用。

+6

更確切地說,它返回一個jQuery對象。 – 2014-10-06 15:27:28