2010-08-06 26 views
7

Slide 30 trong Paul Irish's blog đề cập:Là .find() nhanh hơn phương pháp lựa chọn con cháu cơ bản?

$('#container').find('div.robotarm') nhanh hơn $('#container div.robotarm')

là đúng này?

+3

Tôi muốn nói rằng các ý kiến ​​được tính là không có gì. Tạo một số điểm chuẩn và chạy chúng nhiều lần (tốt nhất là trên các trình duyệt khác nhau) và kiểm tra kết quả. Đó là cách duy nhất để có được câu trả lời dứt khoát, IMO. –

+0

https://forrst.com/posts/I_ran_a_little_speed_test_on_jQuery_selectors_Y-3mQ Điều này có thể hữu ích. – Kriem

Trả lời

5

Có thể trong phiên bản trước của jQuery là trường hợp đó. Tuy nhiên, khái niệm

$('#container div.robotarm') 

được chuẩn hóa thông qua jQuery vào

$('#container').find('div.robotarm') 

Vì vậy, lý do duy nhất tại sao $('#container div.robotarm') nên chậm là do chức năng cuộc gọi trên cao. Nhưng, đó thực sự sẽ là một sự khác biệt tầm thường.

Nếu cuộc gọi đó không được chuẩn hóa, sizzle (Công cụ chọn css lại) sẽ được sử dụng để tra cứu phần tử đó (từ phải sang trái). Điều đó tất nhiên sẽ chậm hơn nhiều.

+1

Có ai có thể trích dẫn một số tài liệu để sao lưu tài khoản này không? Không thể tìm thấy bất kỳ thứ gì trên tìm kiếm nhanh trên google. –

2

Vì bạn đã hỏi ý kiến, điều đó không quan trọng.

Bạn luôn có thể tìm ra một trường hợp chạy nhanh hơn trường hợp khác trong một số trình duyệt theo một cấu hình nhất định của DOM. Không cần phải chia tóc.

1

Điều này chỉ đúng khi tìm kiếm theo ID.

Nhưng khi chúng tôi tìm kiếm theo tên thẻ, nó trả về các kết quả khác nhau trong các trình duyệt hiện đại, nơi $('div').find('p') chậm hơn $('div p') vì sau này sử dụng querySelector().

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