-3

我试图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?

谢谢!

4

7 回答 7

7

Check

$('#train').children().length

Demo: Fiddle

You are getting 2 because
$('#train').children.length return the number of arguments expected by the function.

For details see Function.length

In your case $('#train').children references to a function which is expecting 2 arguments that is why you are getting 2 as the output, not because it is the number if visible children

于 2013-06-25T11:44:04.870 回答
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;2 时返回。

那是因为您实际上并没有调用该.children()方法 - 您省略了括号,这意味着您获得了.length函数本身的属性,该属性返回已声明参数的数量。

于 2013-06-25T11:45:49.970 回答
3

你的问题是你忘记了括号。

可能令人惊讶的是,无论元素是什么,它都会返回 2:

$(element).children.length

加上括号就OK了:

$(element).children().length

你为什么得到 2 ?这是因为函数的长度,正如 MDN 所说

函数期望的参数数量。

于 2013-06-25T11:46:04.730 回答
2
$('#train > div:visible').length  //visible ones
$('#train > div:hidden').length //hidden ones
$('#train > div').length //all children DIVs
于 2013-06-25T11:44:15.880 回答
2

This should work:

var childrenCount = $('#train').children().length;
于 2013-06-25T11:44:56.230 回答
1

This would do it

$('#train').children().length
于 2013-06-25T11:44:41.183 回答
0

而不是下面的代码:

$('#train').children.length;

使用以下代码:

$('#train').children("div").length;
于 2013-06-25T11:47:19.657 回答