2014-05-22 92 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;