由于我们在将点击事件委托到div,span,font,p等元素标签上时会导致移动端的ios设备无法识别这个点击事件(一般指click事件),
此时我们一般会使用touchstart来替换click事件,但是使用touchstart来代替click事件的弊端就立刻显示出来,每当我们滑动屏幕时就会立刻出发点击事件
此时加入我这个封装的方法,这个弊端就会迎刃而解

function tap(el,fn){var startPoint = {};el.addEventListener('touchstart', function(e) {startPoint = {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY};});el.addEventListener('touchend', function(e) {var nowPoint = {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY};if(Math.abs(nowPoint.x - startPoint.x) < 5&&Math.abs(nowPoint.y - startPoint.y) < 5) {fn&&fn.call(el,e)}});
}

下面顺便讲一下当使用touchstart来替换click时,必须要记住一点:一定不要忘了添加 event.preventDefault();

但是问题又来了,添加 event.preventDefault();浏览器就会报错,

解决办法:

  • 1、注册处理函数时,用如下方式,明确声明为不是被动的

window.addEventListener(‘touchmove’, func, { passive: false })

  • 2、应用 CSS 属性 touch-action: none; 这样任何触摸事件都不会产生默认行为,但是 touch 事件照样触发。
.sortable-handler {touch-action: none;}

解决touchStart滑动时触发点击事件相关推荐

  1. Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法...

    bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore ...

  2. ajax点击事件无法触发,解决jQuery Ajax动态新增节点无法触发点击事件的问题_婳祎_前端开发者...

    在写ajax加载数据的时候发现,后面添加进来的demo节点元素,失去了之前的点击事件.为什么点击事件失效,我们该怎么去解决呢? 其实最简单的方法就是直接在标签中写οnclick="" ...

  3. 解决按钮点击后长按回车无限触发点击事件问题

    思路: 包一层 UI 库的 button,在里面监听 onkeydown 和 onkeyup,用 flag 阻止长按回车一直触发. 然后在项目全局重新注册 el-button 覆盖掉UI内的按钮组件. ...

  4. 如何解决微信小程序用户高频率触发点击事件?

    <view bindtap='debounce' bindtouchstart="touchStart" bindtouchend="touchEnd"& ...

  5. vue点击弹窗自动触发点击事件的解决办法

    业务场景:使用vue +element ui 的el-dialog,点击弹窗之后,默认加载第一个按钮的数据进行初始化. div 指令: // 自动触发点击事件directives:{trigger:{ ...

  6. 解决datetimepicker不能触发点击事件,日期插件位置偏移,日期范围限制的问题

    最初的问题: 一开始所遇到的问题是相对简单的,就是今天的日期是3-20,但是却可以选择20号之后的日期. html代码: <form action="web?module=stwmgr ...

  7. Vue在页面加载时自动触发点击事件

    在按钮中添加 v-trigger <el-button v-for="data in formData" v-if="data.selectStatus === 1 ...

  8. 微信小程序长按事件触发点击事件的BUG处理

    微信小程序开发说实话还是有点糟心的,经过事件冒泡的坑之后,又遇到了长按事件(longtap)必触发点击事件(tap)的BUG 实例代码 wxml <view class="contai ...

  9. view.performClick()触发点击事件

    1.主要作用 自动触发控件的点击事件 2.界面的布局文件  activity_main.xml <RelativeLayout xmlns:android="http://schema ...

最新文章

  1. 根据时间点截取wav文件
  2. Qt QDialog将窗体变为顶层窗体(activateWindow(); 和 raise() )
  3. ElasticSearch bulk批量增删改语法(来自学习资料 + 自己整理,第27节)
  4. 克隆安装oracle,Oracle 之 Cloning $oracle_home (克隆安装oracle软件)
  5. windows下eclipse搭建android_ndk开发环境
  6. java 日志设计_Java日志设计实践(3) - 开发篇
  7. 水晶底是什么材质_蓝宝石水晶镜面,贵是有道理的!
  8. 使用python写程序时遇到的几个小问题
  9. leetcode article
  10. java垃圾回收GC(学习笔记)
  11. sqlserver openrowset mysql_sqlserver连接mysql
  12. ubuntu安装Nvidia-docker2详细步骤
  13. 现代数字信号处理第九章——盲信号处理
  14. bootstrap3 侧边导航栏
  15. 手机QQ文件存储位置
  16. list容器下的 emplace_front() splice() 函数
  17. 给python点颜色青少年学编程_给老师的新年祝福语
  18. 云计算的六大核心技术,你了解多少?
  19. sqlpython—正则表达式
  20. 付款条件(Payment Term)

热门文章

  1. 联众世界论坛SQL注射漏洞
  2. 前端每周清单年度总结与盘点
  3. 内功修炼-深入了解函数栈帧
  4. Struts2与Struts1的对比学习(一)
  5. Jmeter书中不会教你的(21)——快递时效查询实战2http header manager
  6. Kubernetes pod ephemeral-storage配置
  7. observe数据代理
  8. 并发编程的艺术(5):ReentrantLock的使用
  9. LRC校验-亲测可用
  10. 【数论】拓展欧几里得