在 jQuery v1.7 中添加了一个新方法on。从文档中:
on
‘.on() 方法将事件处理程序附加到 jQuery 对象中当前选定的元素集。 从 jQuery 1.7 开始,.on() 方法提供了附加事件处理程序所需的所有功能。
live和有什么区别bind?
live
bind
on()是一种尝试将 jQuery 的大多数事件绑定函数合并为一个。live这还有一个额外的好处,那就是用vs整理低效率delegate。在 jQuery 的未来版本中,这些方法将被删除并且只会on被one保留。
on()
delegate
one
例子:
// 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);
在内部,jQuery 将 所有 这些方法 和 速记事件处理程序设置器映射到该on()方法,进一步表明您应该从现在开始忽略这些方法并只使用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 ); },
请参阅https://github.com/jquery/jquery/blob/1.7/src/event.js#L965。