ここにはある種の webapp があり、もちろん JavaScript と jQuery が組み込まれています。span
ロード時に、関数はテキストのすべての文字 (約 150 文字) をラップします。次に、ユーザーは文字を選択でき、確認後、結果が表示されます。すべてが素晴らしくスムーズに機能しますが、最後の部分だけが本当にパフォーマンスを殺します.
結果は 3 つの配列に保存されます。クリックすると、クリックされた要素にクラスを追加する関数が起動します(これが確認です)。
私は次のようにします(配列ごとに3回):
$.each(myArr, function( i, v ){
$(v).addClass( "my-class" );
});
このように動作しますが、DOM を頻繁に操作するため、パフォーマンスが低下します。
2.26 GHz と 2 GB RAM を搭載した MacBook を使用していますが、クラスが追加された後、簡単なツールチップなどを実行できません。特に、1 つのアレイが実際に満杯の場合、これはパフォーマンスに悪影響を及ぼします。
私はすでにスクリプトを最適化しようとしました。複数回使用されるすべてのDOMオブジェクトをキャッシュしましたが、これはすべての場合に可能ではありません(私は思う...)。.my-class
また、and#my-id
の代わりにspan[class = my-class]
andのようなセレクターを使用span[id = my-id]
して、すべてを高速化しました。最後の配列部分だけが悪いです。
$.each
この部分を最適化する方法はありますか?キャッシングか何か?それとも別のテクニックを使用していますか?
スクリプトが超高速であるとは思いませんが、結果が表示された後に簡単なツールチップを追加できるはずです。