2011-02-18 67 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; });