2011-12-18 38 views
5

Tôi hiện đang làm việc trên một trang web có hàng ngàn hàng nghìn dòng mã jQuery là gì, có rất nhiều sự kiện bấm đặc biệt và tôi đang tự hỏi là có hiệu suất cao hơn nhận thức, thực hành tốt nhất ở đó cho các sự kiện nhấp chuột ràng buộc hoặc bất kỳ sự kiện nào đối với một mục.Cách tiếp cận tốt nhất để ràng buộc các sự kiện jQuery với các thành phần

Chắc chắn có hơn 30 sự kiện nhấp chuột trên các liên kết và mục khác nhau không thể là hiệu suất tốt được đăng ký khôn ngoan. Chức năng jQuery 1.7 "on" mới đang được sử dụng, có lẽ các sự kiện sẽ được liên kết với phần tử cơ thể hoặc một cái gì đó và sau đó một kiểm tra sẽ nhận được mục đang được nhấp và sau đó làm việc từ đó? Hoặc nó không phải là vấn đề và ràng buộc rất nhiều sự kiện không thực sự là một vấn đề đối với một trình duyệt hoặc hiệu suất hiện đại?

+0

Đoàn sự kiện, hiển nhiên. Bạn muốn có các phần tử thùng chứa tĩnh của bạn, và chủ yếu kết nối các trình xử lý với các phần tử đó ... Ví dụ, nếu bạn có một thanh công cụ có các nút, bạn muốn một trình xử lý nhấn trên thanh công cụ. –

+0

Mức độ độc đáo của mỗi sự kiện khi nhấp chuột là gì? –

+0

Vâng, nó thay đổi. Một số sự kiện nhấp chuột dành cho băng chuyền, một số là để hiển thị các phương thức bật lên, một số là để truyền các sự kiện đến các yếu tố khác. Vì vậy, tôi sẽ nói mỗi sự kiện là khá độc đáo. –

Trả lời

5

Bạn nên liên kết các phần tử với phần tử dom thấp nhất chứa tất cả các phần tử được nhấp.

Vì vậy, nếu có một div gọi foo chứa mọi yếu tố duy nhất, bạn muốn nói:

$("#foo").on("click", "yourselector", function(){ 
}); 

Nếu các phần tử của bạn được lan truyền trên mỗi inch của trang của bạn, sau đó bạn muốn nghe tại rất top:

$(document).on("click", "yourselector", function(){ 
}); 

Nếu tôi hiểu câu hỏi của bạn một cách chính xác, tôi thực sự thực sự hy vọng các nhà phát triển trước đó đã không làm điều gì đó như:

$("#someButtonId").on("click", function(){ 
    //this defeats the whole purpose of on!!! 
}); 
+0

Đây luôn là cách tôi nghĩ bạn nên làm điều đó. Có vẻ là một điều chủ quan mặc dù, chắc chắn hữu ích. Tôi không viết hầu hết mã, vì vậy tôi muốn sửa nó và làm cho nó hiệu quả hơn. Có vẻ như các sự kiện nhấp chuột ràng buộc vào vùng chứa của tất cả các phần tử bạn muốn liên kết là cách tiếp cận tốt nhất. –

+0

Đáng buồn là Adam, nhà phát triển trước đã liên kết các nhấp chuột sử dụng trên các phần tử đơn lẻ như bạn đã đề cập, đó là lý do tại sao tôi sửa chữa nó một cách cẩn thận, đó là một cơn ác mộng về hiệu suất và chưa kể đến đó là một trang web Magento. các cuộc gọi nội tuyến và không có gì. –

+0

Tôi đã nghĩ đến việc sử dụng $ (tài liệu) .on ("click", "yourselector", function() {cho mã do tính duy nhất của các mục nhưng không chắc liệu điều đó có hiệu quả không tốt cho một trang được tạo –

1

Bạn có thể liên kết cùng một sự kiện nhiều lần trên một phần tử, nhưng nếu bạn có nhiều sự kiện nhấp chuột 30 trên cùng một liên kết, bạn nên thực hiện theo cách khác. Đặt mã cho tất cả các hành động khác nhau mà bạn muốn thực hiện trong một trình xử lý sự kiện đơn lẻ thay vì ràng buộc mọi điều nhỏ một mình.

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