浅析jquery unbind()方法移除元素绑定的事件


Posted in Javascript onMay 24, 2016

unbind()方法可以移除元素已绑定的事件,它的调用格式如下:

$(selector).unbind(event,fun)

其中参数event表示需要移除的事件名称,多个事件名用空格隔开,fun参数为事件执行时调用的函数名称。

语法 

unbind()函数主要有以下两种形式的用法:

用法一:

jQueryObject.unbind( [ events [, handler ]] )

移除当前匹配元素的events事件绑定的事件处理函数handler。

用法二:

jQueryObject.unbind( eventObject )

为指定事件处理函数传入的Event对象,用于移除对应的事件处理函数。

参数

参数 描述

events 可选/String类型一个或多个用空格分隔的事件类型和可选的命名空间,例如"click"、"focus click"、"keydown.myPlugin"。

handler 可选/Function类型指定的事件处理函数。

eventObject Object类型一个Event对象,用于移除传入该对象的事件处理函数。

jQuery 1.4.3 新增支持参数handler可以为false。用于移除绑定事件时,handler参数为false值的事件处理函数。

如果省略参数handler,则移除匹配元素指定类型的事件上绑定的所有事件处理函数。

如果省略了所有参数,则表示移除匹配元素上为任何元素绑定的任何事件类型的任何事件处理函数。 

返回值

unbind()函数的返回值为jQuery类型,返回当前jQuery对象本身。

实际上,unbind()函数的参数全是筛选条件,只有匹配所有参数条件的事件处理函数都将被移除。参数越多,限定条件就越多,被移除的范围就越小。 

示例&说明 

请参考下面这段初始HTML代码:

 

<input id="btn1" type="button" value="点击1" /> 
<input id="btn2" type="button" value="点击2" /> 
<a id="a1" href="#">CodePlayer</a>

首先,我们为上述button和<a>元素绑定事件,然后使用unbind()函数解除事件绑定,相应的代码如下:

function btnClick1(){ 
  alert( this.value + "-1" ); 
} 
 
function btnClick2(){ 
  alert( this.value + "-2" ); 
} 
 
var $buttons = $(":button"); 
 
// 为所有button元素的click事件绑定事件处理函数btnClick1 
$buttons.bind( "click", btnClick1 ); 
 
// 为所有button元素的click事件绑定事件处理函数btnClick2 
$buttons.bind( "click", btnClick2 ); 
 
// 为所有a元素的click、mouseover、mouseleave事件绑定事件处理函数 
$("a").bind( "click mouseover mouseleave", function(event){ 
  if( event.type == "click" ){ 
    alert("点击事件"); 
  }else if( event.type == "mouseover" ){ 
    $(this).css("color", "red"); 
  }else{ 
    $(this).css("color", "blue");    
  } 
}); 
 
 
// 移除为所有button元素的click事件绑定的事件处理函数btnClick2 
// 点击按钮,只执行btnClick1 
$buttons.unbind("click", btnClick2); 
 
 
// 移除为所有button元素的click事件绑定的所有事件处理函数(btnClick1和btnClick2) 
// 点击按钮,不会执行任何事件处理函数 
// $buttons.unbind("click"); 
 
 
// 只移除为btn1元素的click事件绑定的所有事件处理函数 
 // btn2元素的click事件仍然有效 
// $("#btn1").unbind("click"); 
 
// 移除为所有a元素的任何事件绑定的所有处理函数 
// 点击链接,或用鼠标在链接上移入、移出,都不会触发执行任何事件处理函数 
// $("a").unbind( );
unbind()函数还可以根据传入的事件对象来移除函数。以下jQuery代码只允许第一次点击按钮【点击1】时弹出提示框,之后立即移除该点击事件。
var $btn1 = $("#btn1"); 
$btn1.bind("click", function(event){ 
  alert("只执行一次!"); 
  $(this).unbind( event ); // 移除当前事件处理函数  
}); 
此外,unbind()函数还可以只移除指定命名空间的事件绑定。 
 
var $buttons = $(":button"); 
 
// 为所有button元素的click事件绑定事件处理函数 
$buttons.bind( "click.foo.bar", function btnClick1(){ 
  alert( "click-1" ); 
} ); 
 
// 为所有button元素的click事件绑定事件处理函数 
$buttons.bind( "click.test.bar", function btnClick1(){ 
  alert( "click-2" ); 
} ); 
 
 
// 移除包含命名空间foo的click事件绑定的事件处理函数 
$buttons.unbind( "click.foo" ); // 移除click-1 
 
//移除包含命名空间bar的click事件绑定的事件处理函数 
// $buttons.unbind( "click.bar" ); // 移除click-1和click-2 
 
//移除包含命名空间test的click事件绑定的事件处理函数 
// $buttons.unbind( "click.test" ); // 移除click-2 
 
// 移除所有button元素的click事件绑定的所有事件处理函数 
// $buttons.unbind("click"); // 移除click-1和click-2

以上这篇浅析jquery unbind()方法移除元素绑定的事件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery根据纬度经度查看地图处理程序
May 08 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
Oct 22 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
详解javascript高级定时器
Dec 31 Javascript
JavaScript File分段上传
Mar 10 Javascript
Bootstrap表单组件教程详解
Apr 26 Javascript
js判断空对象的实例(超简单)
Jul 26 Javascript
Vue.js动态组件解析
Sep 09 Javascript
Angular学习笔记之angular的$filter服务浅析
Nov 12 Javascript
学习vue.js表单控件绑定操作
Dec 05 Javascript
详解A标签中href=&quot;&quot;的几种用法
Aug 20 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
Aug 12 Javascript
jQuery unbind 删除绑定事件详解
May 24 #Javascript
深入理解jQuery之防止冒泡事件
May 24 #Javascript
30分钟快速掌握Bootstrap框架
May 24 #Javascript
JQuery 传送中文乱码问题的简单解决办法
May 24 #Javascript
深入理解jQuery中的事件冒泡
May 24 #Javascript
jQuery 弹出层插件(推荐)
May 24 #Javascript
基于jQuery实现仿QQ空间送礼物功能代码
May 24 #Javascript
You might like
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
jQuery使用方法
2017/02/04 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
python字典基本操作实例分析
2015/07/11 Python
python实现感知器算法详解
2017/12/19 Python
django foreignkey(外键)的实现
2019/07/29 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
中专毕业生的自我鉴定
2013/12/01 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
2016中秋节广告语
2016/01/28 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android