2013-12-15 53 views
9

Gần đây tôi đã bắt đầu học jQuery. Xem xét cấu trúc html follwing, tôi muốn biết, sự khác biệt cơ bản giữa các bộ chọn $('ul>li:eq(2)')$('ul>li').eq(2) là gì.Sự khác biệt giữa ": eq()" và .eq()

<ul> 
    <li>one</li> 
    <li>two</li> 
    <li>three</li> 
    <li>four</li> 
    <li>five</li> 
</ul> 

Trả lời

11

Họ làm điều tương tự, nhưng người ta là đáng kể chậm: http://jsperf.com/eq-vs-eq

:eq() không phải là một CSS pseudo-selector, mà làm cho bộ chọn đầu tiên một bộ chọn jQuery. Do đó, nó phải được phân tích cú pháp bởi thư viện bộ chọn Sizzle, được viết bằng JavaScript.

Phần thứ hai là bộ chọn CSS thông thường và sẽ được chuyển trực tiếp vào document.querySelectorAll, được thực thi nguyên bản và sẽ kết thúc chạy nhanh hơn nhiều.

1

Về cơ bản không có sự khác biệt giữa chúng, ngoại trừ hiệu suất. jQuery có nhiều phương thức tương đương với các bộ chọn.

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