0

重複の可能性:
jQuery オブジェクトのマージ


** 目標はパフォーマンスです。重複した質問は機能に対処していますが、パフォーマンスの価値を追加するとは思わず、その側面に対処していません。**

パフォーマンスのために、いくつかの jQuery 要素を連鎖させたいのですが、最適化のために、それらは既に変数にキャッシュされています。

もし私が持っているなら

$elem1 = $('div#elem1');
$elem2 = $('div#elem2');
$elem3 = $('div#elem3');

これはうまくいきません:

$elem1,$elem2,$elem3.hide(); 

既にキャッシュされた要素と連鎖して、それを行う方法はありますか?

ありがとう!

[編集]
OK、私は本当に明確にする必要があります。連鎖の私の目標は、簡潔でありながら明確なコードのボーナスを伴うパフォーマンスです。
$('div#elem1, div#elem2, div#elem3').hide();
キャッシュされた変数を使用しなくなったため、ポイントを無効にしますが、dom に再度アクセスします。dom へのアクセスはコストがかかるため、3 行よりも遅いと確信しています。
.add() と .merge() は、操作を 3 行に分けるよりもコストがかかると思います。パフォーマンス上の理由から、jPerf を実行する時間ができるまでは、余分な操作ではなく 3 つの異なる行が最高のパフォーマンスを発揮すると仮定します。


コラボレーション、ブレインストーミング、および考えに感謝します。感謝しています。私はその可能性を認識しておらず、そうでなければ jPerf で何をテストすればよいか分からなかったでしょう。

4

4 に答える 4

2

どれだけクリーンかはわかりませんが、jQueryを使用each()してそれらの配列を反復処理できます。正確には連鎖していませんが、最終結果は同じになるはずです。

$.each([$elem1,$elem2,$elem3], function() {this.hide()})
于 2012-09-03T16:45:33.983 に答える
1

私が考えることができる唯一のことは、それらすべてを一緒に置くことです.add()

$elem1.add($elem2).add($elem3).hide();
于 2012-09-03T16:30:38.323 に答える
0

いいえ、これはうまくいきません。これをやってみてください

$('div#elem1, div#elem2, div#elem3').hide();

また

$elem1.hide(); $elem2.hide(); $elem3.hide()

于 2012-09-03T16:35:11.597 に答える
0
var elements = [];
elements.push($elem1);
elements.push($elem2);
elements.push($elem3);

$(elements).each(function(i){
    elements[i].hide();
});
于 2012-09-03T16:37:40.467 に答える