bind()和unbind()提供了事件的绑定和取消机制,既可以绑定html默认支持的事件,也能够绑定自定义的事件。

1、JQuery中事件可以重复绑定,不会覆盖。

1 $("#button1").bind("click",function(){2 alert("func1");3 });4 $("#button1").bind("click",function(){5 alert("func2");6 });

1 $("#button1").bind("click",sameFunc);2 $("#button1").bind("click",sameFunc);3

4 functionsameFunc()5 {6 alert("func");7 }

当点击button1的时候,这2个事件处理函数都会触发。上面绑定的是不同的匿名函数,占用不同的内存空间。就算是同一个处理函数,依然存在重复绑定问题。当button1被点击的时候,上面的事件处理函数同样会被调用2次。

2、使用bind一次绑定多个事件和处理函数。

如果多个事件需要注册相同的处理函数,那么可以使用如下代码进行简化(事件名称使用空格分隔):

1 $("#button1").bind("mousedown mouseup",function(){2 console.log(11);3 });

如果每个事件的处理函数不同,那么可以使用如下的方式(json对象):

1 $("#button1").bind(2 {3 "mousedown":function(){4 console.log("mousedown");5 },6 "mouseup":function(){7 console.log("mouseup");8 }9 }10 );

3、传递event对象和自定义参数

1 $("#button1").bind("click", {name:"aty"}, function(eventObject){2 alert("params=" +eventObject.data.name);3 });

eventObject很像IE和FF中的event对象,通过它能够获取事件发生时更详细的信息。如果我们指定了自定义的参数,那么JQuery会将它放在事件对象的data属性中,即通过eventObject.data就能够拿到我们传递的参数值。

4、事件取消的三种形式。

unbind用来取消之前通过bind绑定的事件处理函数,总的来说有三种形式:取消所有事件、取消某种类型的事件、取消某种类型下的某个事件处理函数。

1 $("#button1").bind("click",func1);2 $("#button1").bind("click",func2);3

4 //try to cancel function2

5 $("#button1").unbind("click",func2);6

7 functionfunc1()8 {9 console.log("click1");10 }11

12 functionfunc2()13 {14 console.log("click2");15 }

$("#button1").unbind():取消button1上所有已经绑定的事件处理函数。

$("#button1").unbind("click"):只取消button1上绑定的click类型的事件处理函数。

虽然bind和unbind是用的匿名函数功能是相同的,但是这2个函数不是同一个javascript对象,因为它们占用不同的内存空间。可以看到这种做法非常的不好,因为这种做法不允许使用匿名函数,我们不得不暴露全局的函数(至少要求unbind的时候能够看得见)。JQuery提供了事件命名空间机制

5、事件命名空间。

所谓事件命名空间,其实就是在事件类型后面以点语法附加一个别名,以便引用事件,如”click.a”,其中”a”就是click当前事件类型的别名,即事件命名空间。

1 $("#button1").bind("click.a",function(eventObj){2 console.log("click1");3 });4 $("#button1").bind("click.b",function(eventObj){5 console.log("click2");6 });7

8 //success to cancel function2

9 $("#button1").unbind("click.a");

可以看到:使用命名空间,能够以一种更优雅的方式取消某种事件类型下的某个事件处理函数。这里值得一提:使用了命名空间与unbind并不冲突,上面三种形式的unbind依然可以正常使用。$("#button1").unbind()依然可以取消button1上的所有事件,$("#button1").unbind("click")依然可以取消所有的click事件。

1 $("#button1").unbind("click.a");2 $("#button1").unbind("mouseup");3 $("#button1").unbind("mousedown");4 $("#button1").unbind(".a");

jquery unbind 异步_JQuery中的bind()和unbind()的理解相关推荐

  1. jquery unbind 异步_JQuery中绑定事件(bind())和移除事件(unbind())

    有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理.比如bind()(绑定事件)和unbind()(移除通过bind()方法添加的事件)方法来移除事件的效果. 比如下面的一个案例: $(fu ...

  2. jquery unbind 异步_jQuery中的内置方法:unbind()

    unbind()方法是jQuery中的内置方法,用于删除任何选定的事件处理程序.此方法可用于删除特定的事件处理程序或停止特定的函数.它可以在任何使用事件对象的事件处理程序上工作. 如果没有提供参数,则 ...

  3. jquery unbind 异步_jquery 使用 unbind 解决重复绑定执行事件

    存在问题 在jquery监听click事件的时候会出现点击一次没有重复,点击第二次就重复的情况.出现这个问题的原因是之前的click事件被绑定后,并没有解绑. 还原问题现场 先来看看需求:点击一个数据 ...

  4. JQuery中bind和unbind函数

    JQuery中bind和unbind函数 测试: 页面代码: <body> <input type="button" name="aaa" v ...

  5. [jQuery] 谈一下Jquery中的bind(),live(),delegate(),on()的区别?

    [jQuery] 谈一下Jquery中的bind(),live(),delegate(),on()的区别? 在我们深入了解这些方法之前,我们先来一段常见的的HTML,作为我们编写jquery示例方法使 ...

  6. jquery事件绑定和解除绑定bind、unbind、one

    全栈工程师开发手册 (作者:栾鹏) jquery系列教程4-事件操作全解 jquery事件绑定 使用函数bind(type [,data],fn)绑定事件,one函数也可以进行一次绑定,但是需要注意b ...

  7. php中jquery ajax请求参数,浅谈Jquery中Ajax异步请求中的async参数的作用

    之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html asy.js function testAsync{ var temp; $.ajax( ...

  8. ajax拿table里的th值,Jquery Ajax 异步设置Table中某列的值

    可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...

  9. jquery选择器连续选择_JQuery中的选择器

    jquery选择器连续选择 It's time to write some JQuery now. Do check out the introductory article on JQuery fi ...

最新文章

  1. 软件测试集成测试广度,软件测试的规范[6]
  2. QQ采用什么传输协议?
  3. Conan and Agasa play a Card Game
  4. js返回上一页并刷新代码整理 转
  5. Python 中使用 jsonpath
  6. 2020-08-20
  7. 【读书笔记】深入分析Java Web技术内幕-Cookie与Session
  8. 解决idea的.gitignore有时不起作用的问题
  9. 互联网架构介绍 --from 光荣之路
  10. Modelsim软件的使用教程
  11. java游戏局域网实现的_java学习笔记: 实现简易局域网聊天程序
  12. SAP 越南小写金额转大写金额 amount in word
  13. android系统应用程序电量消耗计算方法
  14. 使用Cubic备份或制作自定义通用型Ubuntu Live ISO镜像适用于 16.04 18.04 20.04 等
  15. [SSL_CHX][2021-8-18]条件输出4
  16. 基于STM32F4:多通道ADC采集,采用DMA的形式,亲测有效
  17. MyBatis学习总结(三)
  18. 技术贴(1):将移动硬盘名从F盘改为E盘
  19. mysql查询学生表的总人数,MySQL查询练习2
  20. Linux0.11内核源码分析(bootsect.s)

热门文章

  1. Gradle 任务访问文件的几种方式
  2. Visual Studio Code里一个查看括号匹配的神器 - Bracket Pair Colorizer
  3. Account mobile phone in CRM and C4C
  4. why we need getCoreClasses()
  5. 观察者模式在SAP ui5修改theme实现中的应用
  6. SAP CRM One Order scheduline buffer handling
  7. Supplier 点participate时候用USB KEY的身份验证
  8. Shortcut setting in Webclient UI
  9. CRM_UPLOAD_BW
  10. 如何调试 web worker