Is the sort order of jQuery's $().each() guaranteed?
So after reading the docs and coming away still not quite certain, I ended up diving in an actually reading the jQuery source code (thanks to @RoryMcCrossan's answer for prompting me on that).
In fact (contrary to what @RoryMcCrossan said), $().each()
uses either for...in
or for
, depending on whether the input is an object or an array.
For 'array', it suffices to be an 'array-like' object, which is the case for a jQuery object because it contains a numbered list of elements and a length
property.
Therefore, a call to $().each()
will use for
and not for...each
as it is iterating over a jQuery object. And since we're using for
, we know that we can guarantee the order of iteration for $().each()
will match the order of the elements it is given.
So that leads me to ask a follow-up question of whether the order of elements given by the original query is guaranteed to be the same as they appear in the DOM. If so, then I should be okay.
The answer to that can be found in the question linked in the comments by @Mritunjay, and the answer is 'yes, they are returned in the order that they appear in the DOM.
So the final answer is that yes, I can use $('.myList li').each()
and iterate through the list items in the order that they appear in the DOM.
Thanks for the help and the prompts guys. Much appreciated.