2012-04-13 52 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 ? ...