Count immediate child div elements using jQuery

JavascriptJqueryDomJquery Selectors

Javascript Problem Overview


I have the following HTML node structure:

<div id="foo">
  <div id="bar"></div>
  <div id="baz">
    <div id="biz"></div>
  </div>
  <span></span>
</div>

How do I count the number of immediate children of foo, that are of type div? In the example above, the result should be two (bar and baz).

Javascript Solutions


Solution 1 - Javascript

$("#foo > div").length

Direct children of the element with the id 'foo' which are divs. Then retrieving the size of the wrapped set produced.

Solution 2 - Javascript

I recommend using $('#foo').children().size() for better performance.

I've created a [jsperf][1] test to see the speed difference and the children() method beaten the child selector (#foo > div) approach by at least 60% in Chrome (canary build v15) 20-30% in Firefox (v4).

By the way, needless to say, these two approaches produce same results (in this case, 1000).

[Update] I've updated the test to include the size() vs length test, and they doesn't make much difference (result: length usage is slightly faster (2%) than size())

[Update] Due to the incorrect markup seen in the OP (before 'markup validated' update by me), both $("#foo > div").length & $('#foo').children().length resulted the same ([jsfiddle][2]). But for correct answer to get ONLY 'div' children, one SHOULD use child selector for correct & better performance

[1]: http://jsperf.com/jquery-child-ele-size "jsperf test" [2]: http://jsfiddle.net/LavMc/ "jsfiddle test"

Solution 3 - Javascript

$("#foo > div") 

selects all divs that are immediate descendants of #foo
once you have the set of children you can either use the size function:

$("#foo > div").size()

or you can use

$("#foo > div").length

Both will return you the same result

Solution 4 - Javascript

$('#foo').children('div').length

Solution 5 - Javascript

In response to mrCoders answer using jsperf why not just use the dom node ?

var $foo = $('#foo');
var count = $foo[0].childElementCount

You can try the test here: http://jsperf.com/jquery-child-ele-size/7

This method gets 46,095 op/s while the other methods at best 2000 op/s

Solution 6 - Javascript

$('#foo > div').size()

Solution 7 - Javascript

$("#foo > div").length

jQuery has a .size() function which will return the number of times that an element appears but, as specified in the jQuery documentation, it is slower and returns the same value as the .length property so it is best to simply use the .length property. From here: http://www.electrictoolbox.com/get-total-number-matched-elements-jquery/

Solution 8 - Javascript

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>

Solution 9 - Javascript

With the most recent version of jquery, you can use $("#superpics div").children().length.

Solution 10 - Javascript

var n_numTabs = $("#superpics div").size();

or

var n_numTabs = $("#superpics div").length;

As was already said, both return the same result.
But the size() function is more jQuery "P.C".
I had a similar problem with my page.
For now on, just omit the > and it should work fine.

Solution 11 - Javascript

$("div", "#superpics").size();

Solution 12 - Javascript

Try this for immediate child elements of type div

$("#foo > div")[0].children.length

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionD&#243;nalView Question on Stackoverflow
Solution 1 - JavascriptGarry ShutlerView Answer on Stackoverflow
Solution 2 - JavascriptmanikantaView Answer on Stackoverflow
Solution 3 - JavascriptDarko ZView Answer on Stackoverflow
Solution 4 - JavascriptAbdennour TOUMIView Answer on Stackoverflow
Solution 5 - JavascriptHaxElitView Answer on Stackoverflow
Solution 6 - JavascriptgizmoView Answer on Stackoverflow
Solution 7 - JavascriptzholdasView Answer on Stackoverflow
Solution 8 - JavascriptJohn AlvarezView Answer on Stackoverflow
Solution 9 - JavascriptKent ThomasView Answer on Stackoverflow
Solution 10 - JavascriptAndrew PerkinsView Answer on Stackoverflow
Solution 11 - JavascriptAlexandros IoannouView Answer on Stackoverflow
Solution 12 - Javascripttalent makhanyaView Answer on Stackoverflow