188

私は次のHTMLノード構造を持っています:

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

fooタイプのの直接の子の数をカウントするにはどうすればよいdivですか?上記の例では、結果は2(barおよびbaz)になります。

4

12 に答える 12

359
$("#foo > div").length

divであるID'foo'を持つ要素の直接の子。次に、生成されたラップされたセットのサイズを取得します。

于 2008-10-30T15:49:53.027 に答える
68

$('#foo').children().size()より良いパフォーマンスのために使用することをお勧めします。

jsperfテストを作成して、速度の違いとメソッドが子セレクター (#foo > div) アプローチを Chrome (カナリア ビルド v15)children()で少なくとも60%、Firefox (v4) で20-30%上回っていることを確認しました。

ところで、言うまでもなく、これら 2 つのアプローチは同じ結果 (この場合は 1000) を生成します。

[更新] size() vs length テストを含むようにテストを更新しましたが、大きな違いはありません (結果:length使用は よりわずかに高速 (2%) ですsize()) 。

[更新] OP に誤ったマークアップが表示されたため (「マークアップ検証済み」の更新前)、$("#foo > div").length&$('#foo').children().lengthの結果は同じでした ( jsfiddle )。しかし、「div」子のみを取得するための正しい答えについては、子セレクターを使用して正しいパフォーマンスを向上させる必要があります

于 2011-08-16T20:13:15.530 に答える
26
$("#foo > div") 


子のセットを取得したら、#fooの直系の子孫であるすべてのdivを選択します。size関数を使用できます。

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

またはあなたが使用することができます

$("#foo > div").length

どちらも同じ結果を返します

于 2008-10-31T01:22:17.350 に答える
8

jsperf を使用した mrCoders の回答に応えて、DOM ノードを使用しないのはなぜですか?

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

ここでテストを試すことができます: http://jsperf.com/jquery-child-ele-size/7

このメソッドは 46,095 オペレーション/秒を取得しますが、他のメソッドはせいぜい 2000 オペレーション/秒です

于 2011-09-09T16:50:18.747 に答える
6
$('#foo > div').size()
于 2008-10-30T15:51:10.433 に答える
5
$("#foo > div").length

jQuery には、要素が出現する回数を返す .size() 関数がありますが、jQuery のドキュメントで指定されているように、低速で .length プロパティと同じ値を返すため、単純に .size() を使用することをお勧めします。長さのプロパティ。ここから: http://www.electrictoolbox.com/get-total-number-matched-elements-jquery/

于 2010-12-05T12:50:45.140 に答える
5
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>
于 2013-03-19T22:04:25.100 に答える
4

jquery の最新バージョンでは、$("#superpics div").children().length.

于 2012-10-12T17:38:54.153 に答える
1
$("div", "#superpics").size();
于 2010-12-13T14:29:04.747 に答える