0

コードの速度を改善しようとしていますが、どちらが DOM にアクセスするより良い/速い方法なのか疑問に思っています。

< li > に対応する ID の配列があり、それらをループしてクラスを追加したいと考えています。

1) ids 配列をループし、id で要素を取得し、クラスを適用します。

    for(var i=0; i<idArray.length i++){
       $('#'+idArray[i]).addClass('someclass')
     }

2) DOM ノードを抽出し、それをキャッシュしてからループするので、DOM の一部のみを反復処理しています。

    var column=$('#my_ul');

    for(var i=0; i<idArray.length i++){
       column.find('#'+idArray[i]).addClass('someclass')
     }

よろしくお願いいたします。

4

2 に答える 2

1

次を使用してループを回避できます。

 $( "#" +idArray.join( ",#") ).addClass("someclass");

セレクターは次のように解決されます。

"#" +["asd","dasd","daa"].join( ",#") 
//"#asd,#dasd,#daa"
于 2012-07-13T10:51:15.023 に答える
0

オプション1の方が速いはずです。ただし、これらがすべて1つの親の子である場合は、クラスを親に追加することをお勧めします。

于 2012-07-13T10:51:11.950 に答える