web-dev-qa-db-fra.com

L'ordre de tri de $ (). Each () de jQuery est-il garanti?

Sur une page de mon site, j'ai une liste d'entrées créées par l'utilisateur - HTML standard <ul> Avec des éléments <li> À l'intérieur.

Je veux parcourir la liste, mais l'ordre des éléments est important.

En utilisant jQuery $('.myList li').each(), puis-je garantir que j'obtiendrai les éléments li dans l'ordre dans lequel ils apparaissent dans le DOM?

D'après mes tests jusqu'à présent, il semble qu'ils soient itérés dans le bon ordre, mais je ne trouve rien qui me dise que c'est garanti.

Si ce n'est pas garanti, quelle serait la meilleure méthode alternative pour les parcourir dans l'ordre?

40
Simba

Donc, après avoir lu les documents et en être encore incertain, je me suis retrouvé à plonger dans le fait de lire le code source de jQuery (merci à @ RoryMcCrossan d'avoir répondu à ma question).

En fait (contrairement à ce que @RoryMcCrossan a dit), $().each() utilise soit for...in Soit for, selon que l'entrée est un un objet ou un tableau .

Pour 'tableau', il suffit d'être un objet 'semblable à un tableau', ce qui est le cas pour un objet jQuery car il contient une liste numérotée d'éléments et une propriété length.

Par conséquent, un appel à $().each() utilisera for et non for...each Car il itère sur un objet jQuery. Et puisque nous utilisons for, nous savons que nous pouvons garantir que l'ordre d'itération pour $().each() correspondra à l'ordre des éléments qui lui sont donnés.

Cela m'amène donc à poser une question de suivi pour savoir si l'ordre des éléments donné par la requête d'origine est garanti d'être le même qu'ils apparaissent dans le DOM. Si oui, alors je devrais aller bien.

La réponse à cela peut être trouvée dans la question liée dans les commentaires par @Mritunjay , et la réponse est 'oui, ils sont retournés dans l'ordre dans lequel ils apparaissent dans le DOM.

Donc, la réponse finale est que oui, je peux utiliser $('.myList li').each() et parcourir les éléments de la liste dans l'ordre où ils apparaissent dans le DOM.

Merci pour l'aide et les invites. Très appréciée.

71
Simba