jQuery 移除事件的方法


Posted in jQuery onJune 20, 2020

在绑定事件的过程中,不仅可以为同一个元素绑定多个事件,也可以为多个元素绑定同一个事件。假设网页上有一个<button>元素,使用以下代码为该元素绑定多个相同的事件。

<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>

<body>
<button id="btn">点击我</button>
<div id="test"></div>
</body>

jQuery 移除事件的方法

当单击按钮后,会出现如上图所示的效果。

1. 移除按钮元素上所有注册的事件

添加一个移除事件的按钮。然后为按钮绑定一个事件,代码如下:

<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>

<body>
<button id="btn">点击我</button>
<div id="test"></div>
<button id="delAll">删除所有事件</button>
</body>

因为元素绑定的都是 click 事件,所以不写参数也可以达到同样的目的。

$('#delAll').click(function(){
$('#btn').unbind();
});

下面来看看 unbind() 方法的语法结构:unbind([type] , [data]);

第1个参数是事件类型,第2个参数是将要移除的函数,具体说明如下。

(1) 如果没有参数,则删除所有绑定的事件。

(2) 如果提供了事件类型作为参数,则只删除该类型的绑定事件。

(3) 如果把在绑定时传递的处理函数作为第2个参数,则只有这个特定的事件处理函数会被删除。

2. 移除<button>元素的其中一个事件

首先需要为这些匿名处理函数指定一个变量。然后就可以单独删除某一个事件了, jQuery 代码如下:

<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>

<body>
<button id="btn">点击我</button>
<div id="test"></div>
<button id="delTwo">删除第二个事件</button>
</body>

当单击“删除第二个事件”按钮后,再次单击“点击我”按钮,显示下图所示的效果。

jQuery 移除事件的方法

另外,对于只需要触发一次,随后就要立即解除绑定的情况,jQuery 提供了一种简写方法——one() 方法。 one() 方法可以为元素绑定处理函数。当处理函数触发一次后,立即被删除。即在每个对象上,事件处理函数只会被执行一次。

one() 方法的结构与 bind() 方法类似,使用方法也与 bind() 方法相同,其语法结构如下:one( type, [data], fn );

示例代码如下:

<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>

<body>
<button id="btn">点击我</button>
<div id="test"></div>
</body>

使用one() 方法为<button>元素绑定单击事件后,只在用户第1次单击按钮时,处理函数才执行,之后的单击毫无作用。

以上就是jQuery 移除事件的方法的详细内容,更多关于jQuery 移除事件的资料请关注三水点靠木其它相关文章!

jQuery 相关文章推荐
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
jquery实现左右轮播切换效果
Jan 01 jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
学习jQuery中的noConflict()用法
Sep 28 jQuery
jquery实现动态添加附件功能
Oct 23 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
详解jQuery-each()方法
Mar 13 jQuery
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
jquery中为什么能用$操作
Jun 18 jQuery
jQuery实现简单三级联动效果
Sep 05 jQuery
jquery插件实现代码雨特效
Apr 24 jQuery
Jquery ajax书写方法代码实例解析
Jun 12 #jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 #jQuery
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 #jQuery
Jquery滑动门/tab切换实现方法完整示例
Jun 05 #jQuery
JQuery实现折叠式菜单的详细代码
Jun 03 #jQuery
深入分析jQuery.one() 函数
Jun 03 #jQuery
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
Jun 02 #jQuery
You might like
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
网上蛋糕店创业计划书
2014/01/24 职场文书
晚会主持词开场白
2014/03/17 职场文书
异地恋情人节寄语
2015/02/28 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
python中pandas对多列进行分组统计的实现
2021/06/18 Python