【发布时间】:2015-04-28 09:48:27
【问题描述】:
在声明中
var length = $(this).parent().parent().parent().children('tr').length;
其中$(this).parent().parent().parent() 部分给了我们一个<tbody> 元素,它恰好有多个 tr 子元素。
1。 那么$(this).parent().parent().parent() 返回的tbody 中的children 中的哪个tr 是这个特定的tr,其长度将由.length 属性返回?
..................................
来自documentation of the length property,
描述:在 jQuery 对象中的元素个数。
我理解为:这里的 'jQuery 对象' 是 tr 元素,它是 $(this).parent().parent().parent() 返回的 tbody 的 子,并且'元素个数'在这个 jQuery 对象中是这个tr 中tds 的个数。所以这里的.length 属性会返回考虑中的tr 中tds 的数量,对吧?
2。 但在给出的示例中here(我复制下面的代码以供参考),声明
var n = $( "div" ).length;
为n 分配divs 中body 的数量。 但它不应该包含div 的/直接子元素的数量吗?
1。同样,如果不同的divs 的长度不同,将返回哪个div 的length?
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>length demo</title>
<style>
body {
cursor: pointer;
}
div {
width: 50px;
height: 30px;
margin: 5px;
float: left;
background: green;
}
span {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<span></span>
<div></div>
<script>
$( document.body )
.click(function() {
$( document.body ).append( $( "<div>" ) );
var n = $( "div" ).length;
$( "span" ).text( "There are " + n + " divs." +
"Click to add more.");
})
// Trigger the click to start
.trigger( "click" );
</script>
</body>
</html>
【问题讨论】:
-
length不找到内容长度,它找到对象的大小(数量)。你把它复杂化了。length属性返回前面对象中匹配元素列表的 size。这就对了!要计算div的孩子的长度/大小,需要使用$('div').children().length()。 -
@ShaunakD "返回前一个对象中匹配元素列表的大小" - 谢谢你,我想我现在明白了。
标签: jquery size parent children content-length