多次注册事件会导致一个事件被触发多次的解决方法

一个JavaScript逻辑,会自动绑定函数到按钮的click事件,但是这段代码会反复注册事件。这样依赖onNext函数会在点击一次按钮的时候多次触发。

这是JQuery内部没有判断是否绑定多次,怀疑其内部用了数组保存事件函数,而且没有去重。

下面的代码预防了这个问题。解决方案很简单。


代码如下:

if (!this.hasPageBarEvents) {
$(".pNext").on("click", this, this.onNext);
this.hasPageBarEvents = true;
}

以后用到JQuery要小心这个特性。

(0)

相关推荐

  • 多次注册事件会导致一个事件被触发多次的解决方法

    一个JavaScript逻辑,会自动绑定函数到按钮的click事件,但是这段代码会反复注册事件.这样依赖onNext函数会在点击一次按钮的时候多次触发. 这是JQuery内部没有判断是否绑定多次,怀疑其内部用了数组保存事件函数,而且没有去重. 下面的代码预防了这个问题.解决方案很简单. 复制代码 代码如下: if (!this.hasPageBarEvents) { $(".pNext").on("click", this, this.onNext); this.h

  • ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法

    这是一个小bug,解决方法有两种:根据做的东西不同选择不同的 <ion-nav-bar class="bar-positive"> <ion-nav-back-button class="button-icon ion-arrow-left-c"> </ion-nav-back-button> <h2>helloafds</h2> </ion-nav-bar> <ion-header-ba

  • MYSQL时区导致时间差了14或13小时的解决方法

    目录 CST 时区 排错过程 解决方案 MySQL时区有问题(相差13或14小时) p>我一般使用MYSQL定义字段类型时,一般使用TIMESTAMP时间戳来定义创建时间与更新时间,并将其定义为默认值为CURRENT_TIME,但是由于场景特殊,现在我需要将一个任务的开始时间与结束时间记录,并写入数据库,那么我的开始时间戳与结束时间戳则不应该是使用数据库自带的默认值的,而是应该使用我使用java代码里面传进去的LocalDateTime.now()方法.但是插入后数据我发现有问题,插入的时间比我

  • SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的快速解决方法

    parameter sniff问题是重用其他参数生成的执行计划,导致当前参数采用该执行计划非最优化的现象.想必熟悉数据的同学都应该知道,产生parameter sniff最典型的问题就是使用了参数化的SQL(或者存储过程中使用了参数化)写法,如果存在数据分布不均匀的情况下,正常情况下生成的执行计划,在传入在分布数据较多的参数的情况下,重用了正常参数生成的执行计划,而这种缓存的执行计划并非适合当前参数的一种情况. 这种情况,在实际业务中,出现的频率还是比较高的,因为存储过程一般都是采用参数化的写法

  • 一些文件未注册导致mssql表文件无法找开的解决方法

    通过 Regsvr 32 .exe, 然后注册下列 DLL : C:\Program files\Common Files\System\ADO\Msado15.dll C:\Program files\Common Files\System\Ole Db\Oledb32.dll C:\Program files\Common Files\System\Ole Db\Sqloledb.dllC:\WINNT\System32\Atl.dll在注册的过程中不能在"运行"里面直接注册,必须

  • 格式导致的Excel导入sql出现异常的解决方法

    本来程序是正常运行的,有时候会因为用户的excel文档没有按要求的格式来做,才会出现一些异常情况.本以为这次也是一样,后来拿到数据一看,并没有发现什么异常,而且自己又照着做了一些数据,竟然也会出现异常,只好怀疑是自己的程序有问题了. 常言说的好,最难找的是最后一个错误,这话确实不错.我几乎动用了我所掌握的各种手段,程序上真的没办法找出有啥问题了.在一个问题上折腾久了,浪费时间不说,还容易让自己的情绪低落.到后来,还是转去怀疑用户的数据有问题,无意中做了一下格式调整,竟然发现异常不见了. Exce

  • php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法

    date.csv:"ID" "NAME" "EMAIL""1" "小明" "xm@163.com""2" "小东" "xd@sina.com""3" "小少" "shaozi@hotmai.com" 读取这个csv文件 复制代码 代码如下: <?php$handl

  • serv-u与屏保导致serv-u服务器经常停止无法连接的解决方法

    公司win2003服务器发现serv-u一直以来都有经常暂停无法连接的问题只有重新启动serv-u才能解决serv-u停止问题,还以为是版本或者流量的关系-- 查来查去终于发现是开启了"屏保"-- 把屏保程序关闭了,解决问题 如果关闭了屏保可以参考下面的方法解决: 最近使用Serv-U来架设FTP服务器,用于文件传输的桥梁.好景不长,每隔一段时间,Serv-U的服务就会自动停止.因为这个ftp服务很重要,要保证每天都能正常工作,如果只靠人每天来查看服务是否正常,牵涉精力不说,又不是十分

  • 覆盖原先的PATH导致命令失效提示command not found的解决方法

    一个同事找我帮他定位,为什么他的LINUX服务器很多的命令都使用不了,提示(command not found),而且更要命的是很多系统服务,脚本都跑不了.问了下,你之前做了些什么操作呢? 他说也做什么操作啊,只不过在/etc/profile文件里面增加了export PATH,又问,你怎么设置的呢? 得到的答案是: [root@localhost ~]# vim /etc/profile export PATH=/usr/lib/jenkins/ [root@localhost ~]# sou

  • asp.net updatepanel 导致JS不能加载,而无法使用的解决方法

    复制代码 代码如下: <script type="text/javascript" language="javascript">    var prm = Sys.WebForms.PageRequestManager.getInstance();    prm.add_endRequest(function () {        // re-bind your jquery events here          $(document).ready

随机推荐