Всегда ли jQuery выполняет итерацию по DOM в порядке их нахождения в коде? - PullRequest
13 голосов
/ 07 февраля 2012

Скажем, например, у меня есть сортируемый список:

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

Что я хочу знать, так это если я сделаю вызов jQuery, например:

$.each($('li'), function(key, item) {...});

Могу ли я ожидать, что jQuery будет просматривать записи сверху вниз? Я выполнил несколько тестов и попытался динамически переставить элементы с помощью jQueryUI, и, похоже, он всегда работает по порядку. Но можно ли этого всегда ожидать? Или это глупая удача, что я так долго не сталкивался, чтобы заставить меня думать иначе ...?

Ответы [ 3 ]

11 голосов
/ 07 февраля 2012

«Можно ли ожидать, что jQuery будет проходить записи сверху вниз?»

Да. Они повторяются по числовому индексу от 0 до length - 1.

Элементы всегда будут возвращаться в порядке их появления в DOM.

«Я провел несколько тестов и попытался динамически переставить элементы ...»

Это не учитывает позиционирование CSS, если вы это имеете в виду. Если вы изменяете их фактическое местоположение в DOM, вы увидите обновления только в том случае, если вы повторно выберете их из DOM.

4 голосов
/ 07 февраля 2012

Он не использовался для, но, поскольку jQuery 1.3.2 селекторы возвращают элементы в том порядке, в котором они находятся в DOM.

3 голосов
/ 07 февраля 2012

В документах нет никого, кто обещал бы такое поведение, но именно так оно и реализуется в настоящее время.

Тем не менее, я не вижу причины, по которой они могли бы изменить это поведение.

...