Czy obiekty zamówienia są zwracane przez określony selektor jQuery?

93

Wszystkie selektory jQuery zwracają tablicę obiektów. Czy te obiekty są zawsze w tej samej kolejności, w jakiej znajdują się w kodzie HTML? Czy mogę na tym polegać?

user28584
źródło

Odpowiedzi:

115

Tak.
Informacje o wydaniu jQuery 1.3.2 mówią:

Elementy zwracane w kolejności dokumentów

Jest to zmiana w silniku selektora jQuery, który ponownie porządkuje zwracane wyniki w kolejności dokumentu, zamiast kolejności, w jakiej selektory zostały przekazane. Ta zmiana została wprowadzona w celu zachowania zgodności ze specyfikacją Selectors API (która jQuery używa wewnętrznie w przeglądarkach, które go obsługują).

Tak nie było w przypadku jQuery 1.3 :

Kolejność selektorów stylu „a, b, c” może ulec zmianie. Przeglądarki obsługujące querySelectorAll (Safari, Firefox 3.5+, Opera 10+, IE 8+) zwrócą elementy w kolejności dokumentów, inne przeglądarki (obecnie) zwrócą je w określonej kolejności. W wersji 1.3.2 i późniejszych wszystkie selektory oddzielone przecinkami zostaną zwrócone w kolejności dokumentu.

Kobi
źródło
1
Ciekawe, że jest to naprawdę w informacjach o wydaniu i ma to również sens, ale ktoś zapomniał o tym, aby umieścić go również w api.jquery.com/multiple-selector - drogi ktoś, proszę też dodać tę informację :)!
jave.web,
Odpowiedź jest naprawdę stara. Czy ktoś znalazł zaktualizowany link?
Daniel Leach
1
@DanielLeach - zaktualizowałem linki, dzięki. To zachowanie powinno nadal być poprawne, jest to również dokument tutaj dla najnowszej wersji: api.jquery.com/multiple-selector
Kobi
8

Mogą istnieć pewne wyjątki, na przykład z dokumentacji prevAll ():

„Biorąc pod uwagę obiekt jQuery, który reprezentuje zestaw elementów DOM, metoda .prevAll () przeszukuje poprzedników tych elementów w drzewie DOM i konstruuje nowy obiekt jQuery z pasujących elementów; elementy są zwracane w kolejności zaczynającej się od najbliższe rodzeństwo ”.

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

Emery Lapinski
źródło
3

Tak, zawsze są w takiej kolejności, w jakiej znajdują się w DOM.

reko_t
źródło
0

Prawdopodobnie w kolejności, w jakiej je znajdzie, selektor prawie przechodzi przez DOM, a kiedy znajdzie pasujący element, umieszcza go w tablicy.

Możesz zrobić test, mówiąc 5 pól tekstowych z identyfikatorami „textbox_n”, gdzie n jest liczbą, a następnie zaalarmować listę i zobaczyć, co otrzymujesz?

royse41
źródło