2009-12-08 33 views
184

Với Jquery, tôi cần phải chọn chỉ mục "n" đầu tiên từ trang, ví dụ như 20 liên kết đầu tiên thay vì chọn tất cả trong số họ với bình thườngChọn mục "n" đầu tiên với jQuery

$("a") 

Âm thanh đơn giản nhưng sách hướng dẫn jQuery không có bằng chứng về điều gì đó như thế này.

Trả lời

324

Bạn có thể muốn đọc lên trên slice. mã của bạn sẽ trông giống như thế này:

$("a").slice(0,20) 
+56

Mặc dù cách tiếp cận ': lt (20)' trông sạch hơn nhiều, nhưng việc sử dụng slice là * nhiều * hiệu quả hơn nếu bạn có kết quả lớn để bắt đầu. Thật không may, khi đánh giá ": lt" và các bộ chọn vị trí khác, ** vòng lặp jQuery thông qua toàn bộ tập hợp **, ngay cả khi nó chỉ nhận được phần tử đầu tiên. Tôi đã viết thêm về điều này trên blog của tôi ở đây: http://spadgos.com/?p=51 – nickf

+1

Cảm ơn bạn, một yêu cầu phụ của yêu cầu của tôi là về buổi biểu diễn, vì vậy đây là câu trả lời đúng cho tôi. Nhờ những người khác đã chỉ ra: bộ chọn lt quá. – Omiod

+2

Nhận xét thông tin của @nickf, nhưng liên kết blog và liên kết biểu đồ dường như không hoạt động – Fractalf

74

Sử dụng lt pseudo selector:

$("a:lt(n)") 

này phù hợp với các yếu tố trước khi một thứ n (nguyên tố thứ n tự túc). Đánh số bắt đầu từ 0.

+11

[Theo tài liệu jQuery] (http://api.jquery.com/lt-selector/#notes-0), .slice nhanh hơn trong các trình duyệt hiện đại. – Blaise

+0

Tôi thích sử dụng phong cách jQuery, nó thanh lịch hơn là chuỗi. –

18

tôi thấy ghi chú này ở phần cuối của lt() docs:

Additional Notes:
Because :lt() is a jQuery extension and not part of the CSS specification, queries using :lt() cannot take advantage of the performance boost provided by the native DOM querySelectorAll() method. For better performance in modern browsers, use $("your-pure-css-selector").slice(0, index) instead.

Vì vậy, sử dụng $("selector").slice(from, to) cho màn trình diễn tốt hơn.

3

.slice() không phải lúc nào cũng tốt hơn. Trong trường hợp của tôi, với jQuery 1,7 trong Chrome 36, .slice (0, 20) thất bại với lỗi:

RangeError: kích thước gọi stack tối đa vượt quá

tôi thấy rằng: lt (20) làm việc mà không có lỗi trong việc này trường hợp. Tôi có lẽ có hàng chục nghìn yếu tố phù hợp.

Các vấn đề liên quan