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插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
jQuery用noConflict代替$的实现方法
Apr 12 jQuery
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
jQuery插件实现非常实用的tab栏切换功能【案例】
Feb 18 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
jQuery插件simplePagination的使用方法示例
Apr 28 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
ThinkPHP登录功能的实现方法
2014/08/20 PHP
php日期操作技巧小结
2016/06/25 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
Python实现拼接多张图片的方法
2014/12/01 Python
python实现用户名密码校验
2020/03/18 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
Python如何定义有默认参数的函数
2020/08/10 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
abstract class和interface有什么区别?
2012/01/03 面试题
求职自荐信
2013/12/14 职场文书
给客户的道歉信
2014/01/13 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
2019个人工作总结
2019/06/21 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
python实现简单的三子棋游戏
2022/04/28 Python