我不明白为什么这种方法存在......
在我看来,你总是会做$(el).click()而不是$(el).on('click', function...
我不明白为什么这种方法存在......
在我看来,你总是会做$(el).click()而不是$(el).on('click', function...
$(el).on为开发人员提供了一种为任何事件类型、直接事件和委托事件绑定事件的统一方式。它还允许您通过传递一个对象同时绑定多个事件(文档中的第二个示例)
您还可以节省一些击键,这是值得的。
您可以同时.on()绑定多个事件类型,因此如果您想对多个事件执行相同的操作,则无需复制代码或创建单独的函数。
$(el).click(...)是 的简写$(el).bind('click', ...)。如果您将 的文档bind()与 的文档进行on()比较,您会发现许多不同之处。
bind()文档的第一段很好地总结了这一点:
从 jQuery 1.7 开始,.on() 方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind() 方法用于将事件处理程序直接附加到元素。处理程序附加到 jQuery 对象中当前选定的元素,因此这些元素必须存在于调用 .bind() 的位置。有关更灵活的事件绑定,请参阅 .on() 或 .delegate() 中有关事件委托的讨论。
据我了解,新功能是.和..on()中有些重复的功能的合并。它既是 API 的合并,也是将实现组合成更统一的实现。.bind().delegate().live()
在我看来,它正在上演以组合/替换各种其他事件绑定函数......一个绑定它们的函数!(LOTR极客ftw)