浅析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 相关文章推荐
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 Javascript
Sortable.js拖拽排序使用方法解析
Nov 04 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 Javascript
JS函数节流和函数防抖问题分析
Dec 18 Javascript
分享ES6的7个实用技巧
Jan 18 Javascript
angular 数据绑定之[]和{{}}的区别
Sep 25 Javascript
JavaScript学习笔记之数组基本操作示例
Jan 09 Javascript
jquery登录的异步验证操作示例
May 09 jQuery
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完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
Js获取事件对象代码
2010/08/05 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
Python中super函数的用法
2017/11/17 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
医学生求职自荐信
2013/10/25 职场文书
股权转让协议书范本
2014/04/12 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
小学运动会前导词
2015/07/20 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js