为什么使用 .on() 添加事件而不是直接添加事件
Why use .on() for adding event instead of directly adding event?
可能的重复项:
jquery on vs Click 方法
从 API:
.on() :将一个或多个事件的事件处理程序函数附加到所选元素。
示例代码:
$("#dataTable tbody tr").on("click", function(event){
alert($(this).text());
});
我们可以写这样的东西:
$("#dataTable tbody tr").click(function() {
alert($this).text();
});
为什么要费心将事件包装在 .on() 中?
谢谢。
为什么要费心将事件包装在 .on() 中?
在这个特定示例中,使用 on()
您可以利用 event delegation
,因此您可以简单地为每个tr
元素附加大量处理程序。
$("#dataTable").on("click", "tr", function(event){
alert($(this).text());
});
此外,使用on()
您可以为事件分配namespace
,例如
$("#dataTable").on("click.mynamespace"...)
因此,您可以以后以更干净、更精致的方式分离您的事件,例如
$("#dataTable").off(".mynamespace"...);
而click(function()...)
只是.on("click", function()...)
的速记方法
主要是.click()
和.on()
之间的区别
使用.click()
,您可以在页面上的现有元素上绑定单击事件,但是例如Ajax刚刚添加的新元素呢,单击事件将不会绑定到新元素上
因此,使用.on()
使您能够将新添加的 ellement 上的点击事件绑定到页面
只是反过来:.click()
是.on('click')
的简写。不将其包装在 .click 中会更快(并允许进一步的选项,如事件委派)。
使用 .click 的唯一优点是:
- 写起来更短
- 它会在错误键入时引发运行时错误,而不是静默失败
.on
给你:
- 事件委派
- 能够为多个事件注册同一处理程序
- 事件名称间距
- 一致的事件注册界面
- 与其他 JS 环境(如
node.js
)的一致性
我总是优先使用.on()
而不是.click()
,以便我可以在我想触发事件时保留后者。
相关文章:
- 将单击事件添加到数据表
- 将单击事件添加到附加的项目中
- 使用引导事件添加动画
- 如何将单击事件添加到JQuery中动态添加的元素中
- 如何在jQuery中将事件添加到新生儿元素中
- JQuery将侦听事件添加到.rezable(),然后附加DIV's
- jQuery:使用实时事件添加tabindex属性
- 将单击事件添加到显示字段
- 如何将事件添加到jQuery's on()回调
- 将此事件添加到工具栏
- TinyMCE 将另一个事件添加到粗体和斜体按钮
- 当用户在输入字段事件中输入内容时,为该字段事件添加动画占位符
- 使用 JQuery 将 onclick 事件添加到动态创建的定位点
- Raphaeljs 将点击事件添加到饼图的一部分
- 将事件添加到网格的coffeescript实现中
- 将事件添加到谷歌地图标记
- Javascript:将onkeydown事件添加到prompt()中
- 如何将onclick事件添加到joint.js元素中
- 角度指令:绑定'鼠标悬停'事件添加到元素
- 将事件添加到涉及for()的索引中的多个子节点