我遇到过几种在 jquery 中处理点击事件的方法:
bind:
$('#mydiv').bind('click', function() {
...
});
click:
$('#mydiv').click(function() {
...
}
on:
$('mydiv').on('click', function() {
...
}
两个问题:
- 他们还有其他方法吗?
- 我应该使用哪一个,为什么?
UPDATE:
正如每个人都提出了有用的建议,我应该更好地阅读文档,并发现我应该使用:
on() 或 click(),
这实际上是同一件事。
但是,没有人解释为什么不再推荐使用 bind ?我可能会因为在某个地方遗漏了明显的地方而得到更多的反对票,但我在文档中找不到原因。
UPDATE2:
'on' 具有能够将事件处理程序添加到动态创建的元素的有用效果。例如
$('body').on('click',".myclass",function() {
alert("Clicked On MyClass element");
});
此代码向类为“myClass”的元素添加一个单击处理程序。但是,如果稍后动态添加更多 myClass 元素,它们也会自动获取单击处理程序,而无需显式调用“on”。据我了解人们所说,这也更有效(参见下面西蒙斯的回答)。
从文档bind
and click
:
bind http://api.jquery.com/bind/ :
从 jQuery 1.7 开始,.on() 方法是首选方法
将事件处理程序附加到文档。
来源 http://code.jquery.com/jquery-latest.js明确表示没有理由使用bind
,因为这个函数只调用更灵活的on
功能甚至更短:
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
},
所以我建议,就像 jQuery 团队一样,忘记旧的bind
功能,现在没用了。它仍然存在只是为了与旧代码兼容。
click http://api.jquery.com/click/ :
该方法是 .on('click', handler) 的快捷方式
当然,这个快捷方式的功能和灵活性不如on
函数并且不允许委托,但它可以让您在应用时编写更短且可以说更具可读性的代码。在这一点上意见不一:一些开发人员认为应该避免它,因为它只是一个捷径,而且还有一个事实是您需要将其替换为on
既然使用了委托,为什么不直接使用on
更加一致?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)