为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery的.bind()与.on()

jQuery的.bind()与.on()

慕沐林林 2019-08-16 16:32:54
jQuery的.bind()与.on()我找到了两篇关于新功能的精彩文章.on():jquery4u.com,elijahmanor.com。有没有什么方法.bind()可以使用更好的.on()?例如,我有一个示例代码如下所示:$("#container").click( function( e ) {} )你可以注意到我只有一个项目由选择器检索,在我的情况下,当我的页面被加载时,<div>命名#container已经存在; 没有动态添加。重要的是要提到我使用最新版本的jQuery:1.7.2。对于该样本,即使我不使用该功能提供的其他功能,也应该.on()使用它代替?.bind().on()
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

在内部,.bind直接映射到.on当前版本的jQuery。(同样适用.live。)因此,如果您使用的话,会有一个很小但实际上微不足道的性能影响.bind

但是,.bind可以随时从将来的版本中删除。没有理由继续使用,.bind而且每个理由都更喜欢.on


查看完整回答
反对 回复 2019-08-16
?
湖上湖

TA贡献2003条经验 获得超2个赞

直接的方法,.delegate是优秀的API,.on并没有打算弃用它们。

直接方法更受欢迎,因为您的代码将不那么串联。错误输入事件名称而不是静默错误时,您将立即收到错误消息。在我看来,它也更容易读写clickon("click"

由于参数的顺序,.delegate它优于.on

$(elem).delegate( ".selector", {
    click: function() {
    },
    mousemove: function() {
    },
    mouseup: function() {
    },
    mousedown: function() {
    }});

你知道它被委派了,因为它说代表。您还可以立即看到选择器。

有了.on它甚至不能立即明确它是否被委派,你必须看看选择器的结尾:

$(elem).on({
    click: function() {
    },
    mousemove: function() {
    },
    mouseup: function() {
    },
    mousedown: function() {
    }}, "selector" );

现在,命名.bind真的很糟糕,而且面值更差.on。但是.delegate不能做非委托事件,并且有些事件没有直接方法,因此在极少数情况下可以使用它,但这只是因为你想在委托事件和非委托事件之间进行清晰的分离。


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 453 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信