回答:
$("#foo > div").length
divであるID「foo」の要素の直接の子。次に、生成されたラップされたセットのサイズを取得します。
$('#table > th').size()
。
$('#foo').children().size()
パフォーマンスを向上させるために使用することをお勧めします。
速度の違いを確認するためのjsperfテストを作成し、メソッドが子children()
セレクター(#foo> div)のアプローチをChrome(カナリービルドv15)で少なくとも60 %、Firefox(v4)で20-30%打ち破った。
ちなみに、言うまでもなく、これら2つのアプローチは同じ結果(この場合は1000)を生成します。
[更新] size()とlengthのテストが含まれるようにテストを更新しましたが、それほど大きな違いはありません(結果:length
使用はよりもわずかに速い(2%)size()
)
[更新] OPで見られる不正なマークアップのために(私による更新「検証をマークアップ」する前に)、両方$("#foo > div").length
&$('#foo').children().length
同じ(結果jsfiddleを)。しかし、正しい答えが「div」の子だけを取得するためには、正しい&より良いパフォーマンスのために子セレクターを使用する必要があります
.length
関数呼び出しのオーバーヘッドがないため、実際には推奨される方法です。
$('#extraLinks').children().size()
div内のテキストボックス(extraLinksという名前)を数えるのが好きなのに4
、2しかないのになぜ取得されるのですか?一般的に、長さを2倍したものになります...なぜでしょうか。ありがとう
$('#foo').children('div').length
jsperfを使用したmrCodersの回答に対して、domノードを使用しないのはなぜですか?
var $foo = $('#foo');
var count = $foo[0].childElementCount
ここでテストを試すことができます:http : //jsperf.com/jquery-child-ele-size/7
このメソッドは46,095 op / sを取得しますが、他のメソッドは最大で2000 op / sです
$("#foo > div").length
jQueryには.size()関数があり、要素が出現する回数を返しますが、jQueryのドキュメントで指定されているように、低速で.lengthプロパティと同じ値を返すため、単純にを使用するのが最善です。長さプロパティ。ここから:http : //www.electrictoolbox.com/get-total-number-matched-elements-jquery/
var n_numTabs = $("#superpics div").size();
または
var n_numTabs = $("#superpics div").length;
すでに述べたように、どちらも同じ結果を返します。
しかし、size()関数はよりjQueryの「PC」です。
ページに同様の問題がありました。
とりあえず、>を省略すれば問題なく動作するはずです。