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ć?
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.
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/
źródło
Tak, zawsze są w takiej kolejności, w jakiej znajdują się w DOM.
źródło
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?
źródło