博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tap 事件会触发两次问题
阅读量:4702 次
发布时间:2019-06-09

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

 

  因项目中使用 coffeeScript (),此处记录下用 coffeeScript 语法解决 tap 事件触发两次的问题。

 

在 id="button" 上绑定 tap 触摸事件如下代码:

$(document).on 'tap', '#button', ()->    # 业务逻辑代码   console.log(111)

 

分析:

  在浏览器中点击一次 button 会输出两次 ‘111’,手机上测试偶尔输出一次,偶尔两次,很是奇怪,一开始怀疑是事件冒泡或者是默认行为,依次尝试:

1、防止冒泡和捕获 w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true 因为是在微信端使用,所以不考虑 IE,在代码中加入 e.stopPropagation(),111 输出偶尔一次,偶尔两次。 2、阻止默认行为
w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false; 加入 preventDefault() ,111 输出两次,说明无效

解决:

两种方法都不能确保触发一次,所以采用比较生硬的方法:setTimeout 延迟 200s 阻止事件再次执行:

flag = true$(document).on 'tap', '#button', ()->    # 业务逻辑代码    if flag       setTimeout(() ->       console.log(111)           flag = true       , 200)    flag = false

  

正常 js 写法:

var flag = true$("#button").on("tap",function(){ if (flag){       setTimeout(function () {       console.log(111)           flag = true       }, 200)  }   flag = false})

  

 

转载于:https://www.cnblogs.com/zhangym118/p/11171686.html

你可能感兴趣的文章
iOS10 UI教程视图和子视图的可见性
查看>>
FindChildControl与FindComponent
查看>>
中国城市json
查看>>
android下载手动下载Android SDK
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>
leetcode133 - Clone Graph - medium
查看>>
一点小基础
查看>>
UNET学习笔记2 - 高级API(HLAPI)
查看>>
"ORA-00942: 表或视图不存在 "的原因和解决方法[转]
查看>>
Oauth支持的5类 grant_type 及说明
查看>>
C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)
查看>>
W3100SM-S 短信猫代码发送 上
查看>>
Linux IO模式及 select、poll、epoll详解
查看>>
Log4j知识汇总
查看>>
[译]快照技术综述 Ⅰ
查看>>
vSphere 高级特性FT配置与管理
查看>>
mac find桌面显示desktop问题
查看>>
Computer Systems A Programmer's Perspective(深入理解计算机系统)第一章读书笔记
查看>>
语义分析
查看>>
mybatis之xml中日期时间段查询的sql语句
查看>>