JQuery中绑定事件(bind())和移除事件(unbind())


Posted in Javascript onFebruary 27, 2015

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

比如下面的一个案例:

<script type="text/javascript">

    $(function(){

       $('#btn').bind("click", function(){

                     $('#test').append("<p>绑定函数1</p>");

              }).bind("click", function(){

                     $('#test').append("<p>绑定函数2</p>");

              }).bind("click", function(){

                     $('#test').append("<p>绑定函数3</p>");

              });

    })

</script>

html部分:

<body>

    <button id="btn">Click Me</button>

    <div id="test"></div>

</body>

当点击按钮btn时,触发了三个点击事件,这里的append()方法,向div层中传递了三个段落内容。

        append() 方法在被选元素的结尾(仍然在内部)追加指定内容。它与html()方法还是不同的,html()方法是改变整个元素中的内容,而不是向元素结尾追加内容。text()方法与html()方法类似,但区别在于html()方法中可以写入html的代码,而且可以被正确的解析,而text()只能当html代码为正常的字符串。

这里每次点击,都会执行一次事件,想div层末尾添加段落。下面的代码是取消事件效果的,可以通过删除事件,使点击效果失效:

<script type="text/javascript">

    $(function(){

       $('#btn').bind("click", function(){

                     $('#test').append("<p>绑定函数1</p>");

              }).bind("click", function(){

                     $('#test').append("<p>绑定函数2</p>");

              }).bind("click", function(){

                     $('#test').append("<p>绑定函数3</p>");

              });

       $('#delAll').click(function(){

              $('#btn').unbind("click");

       });

    })

</script>

        $('#btn').unbind("click");这句代码的作用就是取消元素btn下的click事件。它不仅仅对于bind()方法有效,它对于click()方法同样有效。从某种角度上讲,bind("click",function(){})与click(function(){})是等价的。

还可以针对具体的方法,删除特定的事件。下面的代码可以参考:

<script type="text/javascript">

    $(function(){

       $('#btn').bind("click", myFun1 = function(){

                     $('#test').append("<p>绑定函数1</p>");

              }).bind("click", myFun2 = function(){

                     $('#test').append("<p>绑定函数2</p>");

              }).bind("click", myFun3 = function(){

                     $('#test').append("<p>绑定函数3</p>");

              });

       $('#delTwo').click(function(){

              $('#btn').unbind("click",myFun2);

       });

    })

</script>

unbind()方法的第二个参数是事件对应得执行函数的名字,这样执行完后,只有myFun2这个事件被删除了,其他两个click事件正常执行。

还有一种跟bind()方法类似的方法one(),区别大概就是one()方法只执行一次。为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。代码如下:

<script type="text/javascript">

    $(function(){

       $('#btn').one("click", function(){

                     $('#test').append("<p>绑定函数1</p>");

              }).one("click", function(){

                     $('#test').append("<p>绑定函数2</p>");

              }).one("click", function(){

                     $('#test').append("<p>绑定函数3</p>");

              });

    })

</script>

点击后,只执行一次。再次点击不会触发效果。这就是one方法。

以上所述就是本文的全部内容了,希望本文能够使大家更好的理解jQuery的绑定事件和移除事件,

Javascript 相关文章推荐
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
Apr 24 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
Aug 23 Javascript
js传中文参数controller里获取参数乱码问题解决方法
Jan 03 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
Dec 20 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 Javascript
ES6 如何改变JS内置行为的代理与反射
Feb 11 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
Jul 14 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
Jquery中Event对象属性小结
Feb 27 #Javascript
jQuery中hover方法和toggle方法使用指南
Feb 27 #Javascript
JS实现往下不断流动网页背景的方法
Feb 27 #Javascript
jQuery+easyui中的combobox实现下拉框特效
Feb 27 #Javascript
asp.net+js实现金额格式化
Feb 27 #Javascript
JavaScript检测浏览器cookie是否已经启动的方法
Feb 27 #Javascript
jQuery如何防止这种冒泡事件发生
Feb 27 #Javascript
You might like
如何使用PHP往windows中添加用户
2006/12/06 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
php读取本地json文件的实例
2018/03/07 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
JavaScript实现滑动门效果
2020/01/18 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python基于http下载视频或音频
2018/06/20 Python
python模拟斗地主发牌
2020/04/22 Python
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
家长会邀请书
2014/01/25 职场文书
地理科学专业自荐信
2014/09/01 职场文书
工作作风建设心得体会
2014/10/22 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers