2011-02-18 66 views
2

伙计们,是否有JS/jQuery完全递归子节点计数功能?

比方说,我有以下情况:

<div class="outer"> 
    <div> 
     <span> 
      <ul> 
       <div> </div> 
       <div> </div> 
      </ul> 
     </span> 
    </div> 
    </div> 

我怎么会发现里面div.outer元素的总数是多少?像$('div.outer')。children()。size()或length返回1(我正在寻找,在这种情况下,为5)是否有一个快捷方式或函数来查找总元素数使用js/jQuery还是应该为这个问题写一个函数? TIA。

回答

14

var totalDescendants = $('div.outer *').length;

和完成。


var totalDescendants = $('div.outer').find('*').length;

也将工作。

+0

太棒了。感谢您的及时答复。 – rdodev 2011-02-18 15:50:42

1

一个简单的(可能比jQuery的更快)的JavaScript替代方法是

var el = document.getElementById("foo"); 
var descendantElementCount = el.getElementsByTagName("*").length; 

这并假定你已经给该元素的ID。你可以使用jQuery来获取所有与outer类的元素,如果这是很重要的:

var descendantElementCount = 0; 
$('div.outer').each(function() { 
    descendantElementCount += this.getElementsByTagName("*").length; 
}); 
+0

+1。一个非常合理的建议。 – 2011-02-18 16:12:40

1

jQuery的(文件)。就绪(函数(){VAR = totalChildren的jQuery( “*”,“div.outer “).length; });