0

1から100までの数値<div>のクラスを持つ多くのsを持つダイナミックHTMLがあります。アプリケーションの他の場所で使用するために使用されているグループの数を調べ、現時点でこのコードを使用する必要があります。groupXX

for(i = 0; i <= 100; i++){                       
  if($j('.group' + i).size() > 0) {          
    totalAmountOfGroups++; 
  }
} 

それは機能しますが、6つのグループしか使用できない場合もあるので、不必要に94回ループしていて、これが速度に影響するかどうか疑問に思っていました(特にjQueryが内部にある場合)

4

3 に答える 3

3

の本文で何が実行されるかによって異なりますfor。問題の1つはそれほど高価ではないようです。しかし、私は別の解決策を選びます。HTMLを生成するときに、カウンターなしで要素に別のクラスを追加できます。例class="group group14":このように、セレクターを使用し$('.group')て、必要な要素のみを反復処理することができます。

于 2013-02-26T10:46:16.773 に答える
2

このようにしてみてください

良い方法ではありませんが、近づくよりも速くなります。最良の方法は、すべての要素をクラス「グループ」でマークし、グループ番号を data-group="n" のようなデータ属性に格納することです。この後、一度の操作ですべての要素を選択し、選択した要素を繰り返して属性からグループ番号を抽出できます。

于 2013-02-26T11:17:28.433 に答える
1

group に別のクラスを追加し、それをgroupedと呼び、正規表現を使用してそれらをフィルタリングすることができます

var total = 0;
total = $('.grouped').filter(function(){
    return $(this).attr('class').match(/group[d+]/g);
}).size();
于 2013-02-26T10:47:10.953 に答える