我遇到过这一行,我可以猜到它在做什么,但不应该在子节点上有length > 0
或者它总是返回/可以用作布尔值吗?
或者jQuery的孩子是否返回一个布尔值,或者这个人是否依赖于返回的孩子的存在?
append(($(this).children()) ? '<div class="vAlignWrapper" style="overflow: hidden;">' + $(this).html() + '</div>' : ' ').
我正在尝试调试一个大型JS文件,我正在尝试确保每一行都能完成它应该做的事情。
答案 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 ? ...