on()
là một nỗ lực để hợp nhất hầu hết các hàm liên kết sự kiện của jQuery thành một. Đây có thêm tiền thưởng của quét dọn những không hiệu quả với live
vs delegate
. Trong các phiên bản tương lai của jQuery, các phương thức này sẽ bị xóa và chỉ on
và one
sẽ bị bỏ lại.
Ví dụ:
// Using live()
$(".mySelector").live("click", fn);
// Equivalent `on` (there isn't an exact equivalent, but with good reason)
$(document).on("click", ".mySelector", fn);
// Using bind()
$(".mySelector").bind("click", fn);
// Equivalent `on`
$(".mySelector").on("click", fn);
// Using delegate()
$(document.body).delegate(".mySelector", "click", fn);
// Equivalent `on`
$(document.body).on("click", ".mySelector", fn);
Trong nội bộ, jQuery ánh xạ tất cả các phương thức này và các trình xử lý sự kiện tốc ký vào on()
phương thức, hơn nữa chỉ ra rằng bạn nên bỏ qua các phương thức này từ bây giờ và chỉ sử dụng on
:
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
},
live: function( types, data, fn ) {
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
},
delegate: function( selector, types, data, fn ) {
return this.on( types, selector, data, fn );
},
Xem https://github.com/jquery/jquery/blob/1.7/src/event.js#L965 .