我正在尝试使用wrapper
属性获取.length
的子元素数,但在将其与.children
一起使用时,计数始终等于2。
<div id="wrapper">
<div>content a</div> <!-- visible -->
<div>content b</div> <!-- visible -->
<div>content c</div> <!-- not visible -->
<div>content d</div> <!-- not visible -->
</div>
正如我在SO上所了解的那样,长度属性并未考虑元素可见性。因此,在这种情况下,返回的值应该等于 4 ,但是当使用$('#wrapper').children.length;
时,只返回 2 。
问题:为什么$('#wrapper').children.length;
仅返回2?
谢谢!
答案 0 :(得分:6)
检查
$('#train').children().length
演示:Fiddle
你得到2因为
$('#train').children.length
返回number of arguments expected by the function.
有关详细信息,请参阅Function.length
在你的情况下$('#train').children
引用一个函数,这个函数期望2个参数,这就是为什么你得到2作为输出,而不是因为它是可见子项的数字
答案 1 :(得分:3)
论坛指向
.length
属性,但这只返回可见项目的数量。
不,.length
返回有问题的jQuery对象中的元素数,无论您如何获取jQuery对象或元素当前是否可见。
如何计算#train的所有孩子?
你可以做任何对你的情况有意义的事情:
// all direct children of any element type
$("#train").children().length
// OR just the DIV children
$("#train").children("div").length
// OR all descendant DIVs
$("#train").find("div").length
使用
$('#train').children.length;
时返回。
那是因为你实际上并没有调用.children()
方法 - 你省略了括号,这意味着你得到了函数本身的.length
属性,它返回了声明的参数的数量。 / p>
答案 2 :(得分:3)
你的问题是忘记了括号。
尽管可能令人惊讶,但无论元素是什么,它都会返回2:
$(element).children.length
添加括号,好了:
$(element).children().length
你为什么得到2?那是因为函数的长度是as said by the MDN,
函数预期的参数数量。
答案 3 :(得分:2)
$('#train > div:visible').length //visible ones
$('#train > div:hidden').length //hidden ones
$('#train > div').length //all children DIVs
答案 4 :(得分:2)
这应该有效:
var childrenCount = $('#train').children().length;
答案 5 :(得分:1)
这样做
$('#train').children().length
答案 6 :(得分:0)
而不是以下代码:
$('#train').children.length;
使用以下代码:
$('#train').children("div").length;