Чи повертаються об'єкти замовлення за допомогою селектора jQuery?


93

Усі селектори jQuery повертають масив об'єктів. Чи завжди ці об’єкти мають той самий порядок, що і в HTML? Чи можу я на це покластися?

Відповіді:


115

Так.
У примітках до випуску 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 та пізніших версіях усі селектори, розділені комами, будуть повернуті в порядку документу.


1
Цікаво, що це справді в примітках до випуску, і це теж має сенс, але хтось забув, щоб помістити його також у api.jquery.com/multiple-selector - шановний хтось, будь ласка, додайте туди цю інформацію :)!
jave.web

Відповідь справді стара. Хтось знайшов оновлене посилання?
Даніель Ліч

1
@DanielLeach - я оновив посилання, дякую. Ця поведінка все одно повинна бути правильною, це також документ тут для останньої версії: api.jquery.com/multiple-selector
Кобі

8

Можуть бути деякі винятки, наприклад з документації prevAll ():

"Враховуючи об'єкт jQuery, який представляє набір елементів DOM, метод .prevAll () здійснює пошук попередників цих елементів у дереві DOM і створює новий об'єкт jQuery з відповідних елементів; елементи повертаються в порядку, починаючи з найближчий брат чи сестра ".

http://api.jquery.com/prevAll/



0

Можливо, в тому порядку, в якому він їх знаходить, селектор в значній мірі проходить DOM, і коли він знаходить відповідний елемент, поміщає його в масив.

Можливо, ви можете зробити тест, скажімо 5 текстових полів з ідентифікаторами "textbox_n", де n - число, а потім попередити список і подивитися, що ви отримаєте?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.