2012-04-13 49 views
1

我碰到過這一行,我可以猜出它在做什麼,但是不應該在子節點上有length > 0,或者它會一直返回/可以用作布爾值嗎?jQuery的孩子返回一個布爾?

或者jQuery的孩子返回一個布爾值,還是這個人依賴於返回的孩子的存在?

append(($(this).children()) ? '<div class="vAlignWrapper" style="overflow: hidden;">' + $(this).html() + '</div>' : '&nbsp;'). 

我想調試一個大的JS文件,我試圖確保每行都做它應該做的事。

回答

7

與大多數jQuery方法一樣,children()returns a jQuery object for chaining。如果沒有孩子,它會返回一個空的jQuery對象。

如果你想知道是否有子女存在,你必須使用.length屬性,如果有的話返回一個大於零的數字,如果沒有則返回零。

所以,是的 - 它看起來原來的代碼是不正確的。測試$(this).children()作爲布爾值將始終被視爲true

+0

啊謝謝!它是由更有經驗的人寫的,我不確定。我會解決這個問題。 – Abs 2012-04-13 18:06:49

1

jQuerys .children()函數將返回一個jQuery對象。這將永遠是一個「真理」價值。

如果你想檢查是否有任何的孩子,你應該使用:

... ($(this).children().length > 0) ? ... 

或者,如果你喜歡寫神祕的代碼,這將完成同樣的事情:

... $(this).children().length ? ...