Giả sử tôi chỉ muốn đính kèm một handler nhấp chuột đơn giản để một phần tử, tôi đã luôn luôn làm điều này:Tôi có nên sử dụng .on() hoặc .click() để đính kèm trình xử lý sự kiện không?
$("#mydiv").click(function() { ... });
Nhìn vào các tài liệu JQuery, có vẻ như .on()
là "đề nghị" cách để đính kèm xử lý sự kiện và thay thế .bind()
, .delegate()
và .live()
:
Tính đến jQuery 1.7, phương pháp .Trên() cung cấp tất cả các chức năng cần thiết để gắn xử lý sự kiện. Để được trợ giúp khi chuyển đổi từ các phương thức sự kiện jQuery cũ hơn, hãy xem .bind(), .delegate() và .live().
Và trong tài liệu cho .click()
nó nói:
Phương pháp này là một phím tắt cho .bind (nghe tiếng 'click', handler) trong hai biến thể đầu tiên, và .trigger ('nhấp chuột ') Trong lần thứ ba.
Vì vậy, đây ngụ ý rằng .click()
đang sử dụng .bind()
sẽ được chấp nhận và thay thế bằng .on()
, phải không? Hoặc là ngụ ý rằng .click()
sẽ dính xung quanh, nhưng nó sẽ ở một số điểm trở thành một phím tắt cho .on("click")
?
Về cơ bản, câu hỏi của tôi là thế này ... Khi viết mã JQuery ngày hôm nay, tôi nên sử dụng:
Variant 1: $("#mydiv").click(function() { ... });
hay:
Variant 2: $("#mydiv").on("click", function() { ... });
?
Bạn không phải lo lắng về mã cũ, rất có khả năng chúng sẽ không xóa hoàn toàn ký hiệu nhấp chuột. Trình xử lý .on() chỉ là một cách hiệu quả hơn để gắn các trình xử lý sự kiện, từ việc có thể đính kèm nhiều trình xử lý sự kiện cùng một lúc, để thêm thông tin bổ sung vào một sự kiện được ánh xạ! – Khez