私は、リスト項目(<li>
)の可能性があるリスト(<ul>
)を含むUIシナリオを持っています。このシナリオでは、jQueryを使用して、検索、フィルタリング(クラスおよび属性に対する)、削除および作成が含まれます。このケースを処理するためのベストプラクティスと最適化は何ですか?膨大な数の要素を持つUIはどれくらい遅く/重くなりますか?HTML/Javascriptで何千ものリスト要素を扱う
0
A
答えて
0
何百、何千とき、それは十分に重いです:D
は、たぶん、あなたがまたはAJAXせずにページネーションを使用する必要があります。ややあなたの2番目の質問に答えるために
0
:
var ul = jQuery('<ul/>');
for(var i = 0; i < 100000; i++)
{
var li =jQuery('<li class="hilight"/>');
if(i % 2 == 0)li.addClass('special');
ul.append(li);
}
jQuery(".special").css("background-color","green");
は十分にそれが速くましたか?
2
最高のパフォーマンスを得るには、オブジェクトをDOMの外で使用し、最後にすべてを追加してイベントを委任することで過剰なリフローを避けます。再びDOMへ
$('<li/>', { ... }).appendTo('#el'); // Dynamic object, appended at last
$('ul').on('click', 'li', function(){ ... }); // Delegate events
あなたはDOM内の要素で作業する必要がある場合、それは要素またはclone()
それ、それで仕事をdetach()
すると良いでしょう、とappend()
それは。このパターンに従うことによって、DOMのあなたのULの外部との
0
仕事:
// Clone the ul
var $the_ul = $('#the_ul');
var $new_ul = $('#the_ul').clone();
// Do stuff to $new_ul
// In this example create 5000 lis
for(var i = 1; i <= 5000; i++){
$new_ul.append($('<li class="li-' + i + '">foo ' + i + ' bar</li>'));
}
// Replace the ul in the dom with the updated one
$the_ul.replaceWith($new_ul);
5000のLISを作成し、唯一の方法このパターンを示すために素数を表示するには(クラスで)それらをフィルタリングこの例jsFiddleを参照してください。非常に効率的なことができますし、問題に遭遇する必要はありません。
関連する問題
- 1. 何千もの要素を持つSubversionリポジトリを整理する
- 2. はWPFで何千ものCanvas要素を演奏していますか?
- 3. Ext.form.NumberFieldの何千ものセパレータ
- 4. 何千もの.htaccessリダイレクト301
- 5. 何千もの連続ジョインで、パフォーマンスが必要ですR
- 6. Spark ML VectorAssembler()はデータフレームの何千ものカラムを扱っています
- 7. Pythonで空のXML要素を扱う
- 8. 何千もの項目を扱うことができるDjangoの `ChoiceField`の代替形式
- 9. 何千ものon()イベントリスナーを持つFirebase
- 10. 何千もの画像をキャッシュする
- 11. 何千ものTCPソケットをポーリングする
- 12. 何千人ものユーザーの画像アップロード
- 13. 何千ものレコードのページ番号
- 14. Googleマップ - 何千ものマーカー - JSON
- 15. 何千もの無関係なgunicornワーカー
- 16. Visual Studio 2015:何千もの疑似ビルドエラー
- 17. RODBCを使用して何千もの観測を失う
- 18. d3のキー関数はリスト要素を扱うことができますか?
- 19. 機能(ルピー、Lakhs、何千人も...)
- 20. リストのリストを扱う最も効率的な方法は?
- 21. Appium iOSはテストをフリーズする前に何千もの要素を見つけています
- 22. Javascript - 何千もの単語の千のテキストを検索する最も効率的な方法ですか?
- 23. 何千ものmongodb文書内で計算を行う最も効率的な方法は何ですか?
- 24. 1回のドローコールで何千ものプリミティブを描画する
- 25. OpenGL VBOで何千ものポリゴンを描画する
- 26. select2 anglesは何千ものレコードをロードできません
- 27. DynamoDb:低容量で何千もの項目を書き込む
- 28. Matlabで何千もの画像を再サンプリングしますか?
- 29. IISは何千ものAppPools /ワーカープロセスを処理できますか?
- 30. Googleは何千ものリンクを同じページでクロールします。
これらのすべての(または多くの) 'li'要素にイベントをバインドする場合は、イベントハンドラを親' ul'にバインドします。そうすれば、あなたは1つだけ(より効率的です)、DOMイベントがツリーの上に泡立つように、あなたはまだそれを取り込むことができます。 –