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 相关文章推荐
JavaScript继承方式实例
Oct 29 Javascript
基于JQuery的多标签实现代码
Sep 19 Javascript
js获取元素外链样式的方法
Jan 27 Javascript
浅谈JavaScript事件的属性列表
Mar 01 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
JQuery之proxy实现绑定代理方法
Aug 01 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
Jan 04 Javascript
jquery+css实现侧边导航栏效果
Jun 12 jQuery
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
浅析JavaScript异步代码优化
Mar 18 Javascript
小程序中英文混合排序问题解决
Aug 02 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 Javascript
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
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
python 编程之twisted详解及简单实例
2017/01/28 Python
Python探索之创建二叉树
2017/10/25 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
大学生简单自荐信
2013/11/10 职场文书
保安拾金不昧表扬信
2014/01/15 职场文书