1

我遇到了这条线,我可以猜到它在做什么,但不应该length > 0在孩子身上有 a 还是它总是会返回/可以用作布尔值?

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

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

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

4

2 回答 2

7

像大多数 jQuery 方法一样,children() 返回一个用于链接的 jQuery 对象。如果没有子对象,则返回一个空的 jQuery 对象。

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

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

于 2012-04-13T17:44:29.147 回答
1

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

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

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

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

... $(this).children().length ? ...
于 2012-04-13T17:45:49.297 回答