Все селекторы jQuery возвращают массив объектов. Являются ли эти объекты всегда в том же порядке, что и в HTML? Могу ли я полагаться на это?
Вернулись ли объекты порядка с помощью селектора jQuery?
Ответ 1
Да.
примечания к выпуску jQuery 1.3.2 говорят:
Элементы, возвращенные в заказе документа
Это изменение для механизма выбора jQuery, которое заново заказывает возвращенные результаты в порядке документа, а не в порядке, в котором были переданы селекторы. Это изменение было выполнено для соответствия API-интерфейсам Selectors (который jQuery использует внутри, в браузерах, которые его поддерживают).
Это не относится к jQuery 1.3:
Порядок селекторов стиля "a, b, c" может измениться. Браузеры, поддерживающие querySelectorAll (Safari, Firefox 3.5+, Opera 10+, IE 8+), возвращают элементы в порядке документа, другие браузеры будут (в настоящее время) возвращать их в указанном порядке. В версии 1.3.2 и более поздних версиях все разделители, разделенные запятыми, будут возвращены в порядке документа.
Ответ 2
Могут быть некоторые исключения, например, из документации prevAll():
"Учитывая объект jQuery, представляющий набор элементов DOM, метод .prevAll() ищет через предшественники этих элементов в дереве DOM и конструирует новый объект jQuery из соответствующих элементов; элементы возвращается в порядке, начиная с ближайшего брата.
Ответ 3
Да, они всегда в порядке, так как они находятся в DOM.
Ответ 4
Вероятно, в том порядке, в котором он их находит, селектор довольно много перемещает DOM и когда он находит элемент, который соответствует, помещает его в массив.
Возможно, вы можете сделать тест, указав 5 текстовых полей с идентификатором "textbox_n", где n - число, затем предупредить список и посмотреть, что вы получаете?