博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决jquery使用on()方法绑定事件被执行多次的问题
阅读量:4118 次
发布时间:2019-05-25

本文共 824 字,大约阅读时间需要 2 分钟。

jQuery用on()方法绑定了事件之后,在代码执行过程中,可能会遇到事件被多次执行的情况。本来以为是事件冒泡的问题,后来发现是on()方法的特性引起的问题。

简单还原一下问题的场景

这里简单还原一下问题的场景,使用一个按钮给另一个按钮通过on()方法绑定事件。

html部分

JavaScript部分

$(function(){    $(‘#bindEventBtn‘).click(function () {        $(‘#noEmotionBtn‘).on(‘click‘, function () {            alert(‘我是一个莫得感情的按钮‘);        });    });})

这样,当多次点击bindEventBtn按钮,就会将同一个事件多次绑定到noEmotionBtn按钮上。

而on()方法的一个特性是绑定了多少次就触发多少次的,这就是问题所在。

问题的解决方法

解决问题的方法有两个,大体就是对重复绑定的事件进行解绑。

1、使用off()方法解绑。

$(‘#noEmotionBtn‘).off(‘click‘).on(‘click‘, function () {    alert(‘我是一个莫得感情的按钮‘);});

2、使用unbind()方法解绑。

$(‘#noEmotionBtn‘).unbind(‘click‘).on(‘click‘, function () {    alert(‘我是一个莫得感情的按钮‘);});

总结

实际的场景可能会复杂得多,因此在使用on()方法给元素绑定事件的时候要格外注意多次重复绑定的问题。

但是解决问题的大体思路是一样的,建议是统一先使用off()方法去解绑事件,避免出错。

当然了,最好是从根源上找到问题,也就是避免多次绑定事件的事情发生。

另外,如果要给一个元素在多个地方绑定不同的事件处理函数的话,可能就要另外想想办法了。

本文完〜

转载地址:http://eabpi.baihongyu.com/

你可能感兴趣的文章
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>