2014-05-22 154 views
0

我在jquery所有選擇器有問題。jquery所有選擇器

我在我的div中有三個元素,但是當我使用下面的代碼行來基本上給我的我的div元素內的元素的總長度,雖然我的div包含三個元素,但它是警報0.爲什麼?

jQuery代碼:

var element_count = $('#mydiv').find('*').length; 
alert(element_count); 

HTML代碼:

<div id="mydiv"> 
<p>Hi</p> 
<span>Hello</span> 
<h1>hey</h1> 
</div> 
+0

$('#mydiv')。children()。length; – ahalya

回答

1

總結我們的代碼中的document.ready,以確保DOM已準備就緒,然後嘗試下面的代碼。

$(document).ready(function() 
{ 
var element_count = $('#mydiv').children().length; 
} 

演示: -

http://jsfiddle.net/9aMSz/1/

如jquery的網站提到http://api.jquery.com/children/: -

的。兒童()方法從.find()在不同。兒童( )只有 沿着DOM樹行進一個單獨的級別,而.find()可以遍歷多個級別的 以選擇後代元素(孫輩, 等)。

另一個選項是.find所示在你的代碼,但你缺少document.ready在你的情況!

+1

+1使用更好的'children()'方法,但我認爲OPs問題是沒有DOMReady處理程序。 –

+0

感謝@RoryMcCrossan更新! – Neel

+1

不! '.children()'方法不同於'.find()',因爲'.children()'只向DOM樹的下一層傳遞,而'.find()'可以向下遍歷多層以選擇後代元素孫子等等)以及 – Reigel

3

此代碼無法正常工作的原因是其執行代碼時未執行或DOM未準備好。請確保您已經包裹在DOM代碼準備:

$(document).ready(function(){ 
    alert($('#mydiv').find('*').length); 
}); 

Demo

0

可以使用.children()方法來獲得包含元素的列表。您只能獲得直接兒童。

var contents = $("#myDiv").children(); 
var content_count = contents.length;