2012-02-07 6 views
13

Say, ví dụ, tôi có một danh sách sắp xếp được:jQuery có luôn lặp qua các DOM theo thứ tự mà chúng được tìm thấy trong mã không?

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

Những gì tôi muốn biết là, nếu tôi thực hiện cuộc gọi jQuery như sau:

$.each($('li'), function(key, item) {...});

Tôi có thể mong đợi jQuery để đi qua các mục từ trên xuống dưới? Tôi đã chạy một vài thử nghiệm và cố gắng sắp xếp lại các mục động bằng cách sử dụng jQueryUI và cho đến nay, dường như nó luôn chạy theo thứ tự. Nhưng điều này có thể luôn luôn được mong đợi? Hay may mắn là tôi đã không gặp bất cứ điều gì cho đến nay để làm cho tôi nghĩ khác ...?

+2

Nó * nên *. Sau đó, một lần nữa, trình duyệt luôn quản lý để chèn các lỗi lạ ... –

Trả lời

11

"Tôi có thể mong đợi jQuery đi qua các mục từ trên xuống dưới không?"

Có. Chúng được lặp lại theo chỉ số bằng số từ 0 đến length - 1.

Các phần tử sẽ luôn được trả lại theo thứ tự chúng xuất hiện trong DOM.

"Tôi đã chạy một vài thử nghiệm, và cố gắng sắp xếp lại các mặt hàng tự động ..."

Nó không đưa ra xem xét để định vị CSS nếu đó là những gì bạn có ý nghĩa. Nếu bạn đang thay đổi vị trí thực tế của họ trong DOM, thì bạn sẽ chỉ thấy các cập nhật nếu bạn chọn lại chúng từ DOM.

+0

Dường như jQueryIU có thể cuộn được thực sự định vị lại các DOM trong tài liệu. Kết quả cuối cùng lý tưởng không phải gán một thuộc tính sắp xếp thực tế và tin tưởng jQuery với thứ tự đúng sau khi người dùng sắp xếp các DOM –

+1

@KyleMacey Tôi đã dựa vào jquery trả về chúng theo thứ tự thích hợp cho một số ứng dụng của tôi mà không gặp bất kỳ vấn đề nào . –

+0

@KevinB. Chỉ cần lưu ý rằng jQuery đã không hứa nó phải được đặt hàng ... – gdoron

4

Nó không sử dụng, nhưng vì jQuery 1.3.2 bộ chọn trả lại các phần tử theo thứ tự chúng được tìm thấy trong DOM.

3

Không có nơi nào trong các tài liệu hứa hẹn hành vi này, nhưng cách này hiện được triển khai.

Điều đó nói rằng, tôi không thể thấy lý do tại sao họ sẽ thay đổi hành vi này.

+3

Họ đề cập đến sự thay đổi trong ghi chú phát hành 1.3.2, tôi không chắc liệu điều đó có đủ để cung cấp cho bạn một sự mờ nhạt hay không nhưng họ có ý định tuân thủ [Selectors API] (http://www.w3.org/TR/selectors-api /) chỉ định trả về các phần tử theo thứ tự DOM. –

+0

@PaoloBergantino Cũng đã chơi. –

+1

+1 điểm công bằng. Họ nên chắc chắn điều này trong các tài liệu nếu đó là ý định của họ. –