前端技术分享,欢迎关注!

前端技术分享论坛

 找回密码
 注册帐号

QQ登录

只需一步,快速开始

查看: 11817|回复: 1
打印 上一主题 下一主题

bind() unbind() 和.on() .off()是各自一对,不能混用??

[复制链接]

127

主题

146

帖子

1146

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1146
跳转到指定楼层
楼主
发表于 2013-10-31 16:22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bind() unbind() 和.on() .off()是各自一对,不能混用??
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

127

主题

146

帖子

1146

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1146
沙发
 楼主| 发表于 2013-10-31 16:37:19 | 只看该作者
这个认识是错误的!

查看jq源码可知:
jQuery.fn.bind 扩展方法是直接调用.on()方法去实现的:(如下所示:
function (types, data, fn) {
    return this.on(types, null, data, fn);
}
.on()绑定的事件,可用.off()方法去解绑,自然用bind()方法绑定的事件,也可以用jq1.7 就开始提倡使用的新解绑事件方法.off()去解绑!!

但我们要有这样一个意识:
事件绑定到了哪个元素上,就去哪个元素上解绑!!

比如说:
  1. $(".al").bind('click',function(event) {
  2.                             alert(1111);
  3.                         });
复制代码
我们要给.al解绑click事件,这样写是错误的:
  1. $(document).off("click",".al");
复制代码
因为我们之前就根本没给document绑定过事件,何来解绑??正确写法是:
  1. $(".al").off("click");
复制代码
当然了,下面这样写也是对的:
  1. //document绑定事件
  2. $(document).on('click',".al",function(event) {
  3.                             alert(1111);
  4.                         });
  5. //document上解绑事件
  6. $(document).off("click",".al");
复制代码
前提就是遵循上面讲的”事件绑定到了哪个元素上,就去哪个元素上解绑!!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

QQ|小黑屋|手机版|Archiver|前端技术分享 ( 粤ICP备20056750号  

GMT+8, 2024-5-5 16:07 , Processed in 0.201765 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表