jQuery children返回一个布尔值?

时间:2012-04-13 17:42:53

标签: javascript jquery

我遇到过这一行,我可以猜到它在做什么,但不应该在子节点上有length > 0或者它总是返回/可以用作布尔值吗?

或者jQuery的孩子是否返回一个布尔值,或者这个人是否依赖于返回的孩子的存在?

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

我正在尝试调试一个大型JS文件,我正在尝试确保每一行都能完成它应该做的事情。

2 个答案:

答案 0 :(得分:7)

与大多数jQuery方法一样,children() returns a jQuery object for chaining。如果没有子节点,则返回一个空的jQuery对象。

如果你想知道是否存在任何一个孩子,你必须使用.length属性,如果有,则返回大于零的数字,如果没有,则返回零。

所以,是的 - 看起来原始代码不正确。将$(this).children()作为布尔值进行测试将始终被视为true

答案 1 :(得分:1)

jQuerys .children()函数将返回一个jQuery对象。这将始终是一个“真实”的价值。

如果您想检查是否有孩子,您应该使用:

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

或者,如果您喜欢编写神秘的代码,这将完成同样的事情:

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