使用jQuery计算直接的子div元素
我有以下的HTML节点结构:
<div id="foo"> <div id="bar"></div> <div id="baz"> <div id="biz"></div> </div> <span></span> </div>
我如何计算foo
的直接子types,这是div
types的? 在上面的例子中,结果应该是两个( bar
和baz
)。
$("#foo > div").length
元素的直接孩子与id'foo'是divs。 然后检索生成的包装的大小。
我build议使用$('#foo').children().size()
来获得更好的性能。
我已经创build了一个jsperftesting来查看速度差异,并且在Firefox(v4)中, children()
方法在Chrome(canary build v15)中击败了子select器(#foo> div)至less60% 20-30% 。
顺便说一下,不用说,这两种方法产生相同的结果(在这种情况下,1000)。
[更新]我已经更新了testing,以包括size()与长度testing,并没有太大的区别(结果: length
使用速度稍快(2%)比size()
)
[更新]由于在OP中看到不正确的标记(在我进行'标记validation'更新之前),所以$("#foo > div").length
& $('#foo').children().length
相同( jsfiddle )。 但是为了得到唯一的'div'儿童的正确答案,一个应该使用儿童select器来获得正确和更好的performance
$("#foo > div")
select#foo的直接后代的所有div
一旦你有了一组孩子,你可以使用size函数:
$("#foo > div").size()
或者你可以使用
$("#foo > div").length
两者都会返回相同的结果
为了响应mrCoders回答使用jsperf为什么不只是使用DOM节点?
var $foo = $('#foo'); var count = $foo[0].childElementCount
你可以试试这里的testing: http : //jsperf.com/jquery-child-ele-size/7
这个方法获得了46,095个op / s,而其他方法最多为2000个op / s
$('#foo > div').size()
$('#foo').children('div').length
$("#foo > div").length
jQuery有一个.size()函数,它将返回一个元素出现的次数,但是,如jQuery文档中指定的那样,它比较慢,返回与.length属性相同的值,所以最好简单地使用。长度属性。 从这里: http : //www.electrictoolbox.com/get-total-number-matched-elements-jquery/
var divss = 0; $(function(){ $("#foo div").each(function(){ divss++; }); console.log(divss); }); <div id="foo"> <div id="bar" class="1"></div> <div id="baz" class="1"></div> <div id="bam" class="1"></div> </div>
var n_numTabs = $("#superpics div").size();
要么
var n_numTabs = $("#superpics div").length;
如前所述,两者都返回相同的结果。
但size()函数更多的是jQuery“PC”。
我的页面也有类似的问题。
现在,只要省略>,它应该工作正常。
使用最新版本的jquery,可以使用$("#superpics div").children().length
。
$("div", "#superpics").size();