深入理解jQuery之事件移除


Posted in Javascript onJune 02, 2016

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

比如下面的一个案例:

<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">点击我</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图片预加载技术(详细演示)
Mar 12 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
JQuery异步获取返回值中文乱码的解决方法
Jan 29 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
让你一句话理解闭包(简单易懂)
Jun 03 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
Oct 19 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
利用Node.js+Koa框架实现前后端交互的方法
Feb 27 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
vant中的toast轻提示实现代码
Nov 04 Javascript
深入理解JQuery循环绑定事件
Jun 02 #Javascript
JQuery在循环中绑定事件的问题详解
Jun 02 #Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 #Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
Jun 02 #Javascript
JS从一组数据中找到指定的单条数据的方法
Jun 02 #Javascript
jquery使用on绑定a标签无效 只能用live解决
Jun 02 #Javascript
深入理解jQuery事件绑定
Jun 02 #Javascript
You might like
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
js验证表单第二部分
2006/11/25 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
jQuery技巧总结
2011/01/01 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
js转义字符介绍
2013/11/05 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python切片及sys.argv[]用法详解
2018/05/25 Python
Python无损压缩图片的示例代码
2020/08/06 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
教师自荐信
2013/12/10 职场文书
关于保护环境的建议书
2014/05/13 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python