web-dev-qa-db-ja.com

jQueryの$()。each()のソート順は保証されていますか?

私のサイトの1ページに、ユーザーが作成したエントリのリストがあります-標準HTML _<ul>_と_<li>_要素。

リストを繰り返し処理しますが、要素の順序は重要です。

JQuery $('.myList li').each()を使用して、li要素がDOMに表示される順序で取得されることを保証できますか?

これまでのテストから、それらは正しい順序で繰り返されるように見えますが、保証されていることを示すものは見つかりません。

保証されていない場合、それらを順番に繰り返すための次善の代替方法は何でしょうか?

40
Simba

そのため、ドキュメントを読んでまだ定かではありませんが、実際にjQueryソースコードを読むことに飛び込みました(@RoryMcCrossanの回答をありがとうございます)。

実際(@RoryMcCrossanが言ったこととは反対に)、$().each()は_for...in_またはforを使用します。は入力がオブジェクトか配列かによって異なります

「配列」の場合、「配列のような」オブジェクトで十分です。これは、要素の番号付きリストとlengthプロパティを含むため、jQueryオブジェクトの場合です。

したがって、$().each()への呼び出しは、jQueryオブジェクトを反復処理するときに_for...each_ではなくforを使用します。そして、forを使用しているため、$().each()の反復の順序が、指定された要素の順序と一致することを保証できることがわかります。

そのため、元のクエリで指定された要素の順序がDOMに表示される要素と同じであることが保証されているかどうかのフォローアップの質問をすることになります。もしそうなら、私は大丈夫でなければなりません。

その答えは @ Mritunjayによるコメントにリンクされた質問 で見つけることができ、答えは「はい、DOMに現れる順に返されます。

最後の答えは、はい、$('.myList li').each()を使用して、DOMに表示される順序でリスト項目を反復処理できるということです。

助けてくれてありがとう。大変感謝いたします。

71
Simba