Tất cả các bộ chọn jQuery trả về một mảng đối tượng. Các đối tượng này có luôn theo thứ tự giống như trong HTML không? Tôi có thể dựa vào điều này?
Tất cả các bộ chọn jQuery trả về một mảng đối tượng. Các đối tượng này có luôn theo thứ tự giống như trong HTML không? Tôi có thể dựa vào điều này?
Câu trả lời:
Đúng.
Các jQuery 1.3.2 phát hành ghi chú nói:
Các phần tử được trả lại theo thứ tự tài liệu
Đây là một thay đổi đối với công cụ bộ chọn của jQuery sắp xếp lại các kết quả trả về theo thứ tự tài liệu, thay vì thứ tự mà các bộ chọn được chuyển vào. Thay đổi này được thực hiện để tuân thủ đặc tả API Bộ chọn (mà jQuery sử dụng nội bộ trong các trình duyệt hỗ trợ nó).
Đây không phải là trường hợp trên jQuery 1.3 :
Thứ tự của bộ chọn kiểu "a, b, c" có thể thay đổi. Các trình duyệt hỗ trợ querySelectorAll (Safari, Firefox 3.5+, Opera 10+, IE 8+) sẽ trả về các phần tử theo thứ tự tài liệu, các trình duyệt khác (hiện tại) sẽ trả lại chúng theo thứ tự được chỉ định. Trong phiên bản 1.3.2 và sau đó, tất cả các bộ chọn được phân tách bằng dấu phẩy sẽ được trả về theo thứ tự tài liệu.
Có thể có một số trường hợp ngoại lệ, ví dụ từ tài liệu PreAll ():
"Cho một đối tượng jQuery đại diện cho một tập hợp các phần tử DOM, phương thức .prevAll () tìm kiếm thông qua các phần tử trước của các phần tử này trong cây DOM và tạo một đối tượng jQuery mới từ các phần tử phù hợp; các phần tử được trả về theo thứ tự bắt đầu bằng anh chị em thân thiết nhất . "
Có thể theo thứ tự mà nó tìm thấy, một bộ chọn đi ngang qua DOM và khi nó tìm thấy một phần tử phù hợp, sẽ đặt nó vào một mảng.
Bạn có thể thực hiện một bài kiểm tra bằng cách nói 5 hộp văn bản với id là "textbox_n" trong đó n là một số, sau đó cảnh báo danh sách và xem bạn nhận được gì?