jquery mobile的触控点击事件会多次触发问题的解决方法


Posted in Javascript onMay 08, 2014

jquery mobile 对手势触控提供了如下几个事件监听:

tap  当用户点屏幕时触发
taphold 当用户点屏幕且保持触摸超过1秒时触发
swipe 当页面被垂直或者水平拖动时触发。这个事件有其相关联的属性,分别为scrollSupressionThreshold, durationThreshold, horizontalDistanceThreshold, and verticalDistanceThreshold
swipeleft 当页面被拖动到左边方向时触发
swiperight 当页面被拖动到右边方向时触发

但是 tap 事件在 windows8 触控设备和 android 设备上测试,均有一次点击多次触发的现象。
经测试,tap 方法的响应时间明显快于 onclick 事件,那么我们可以用 click 事件来处理 tap 事件的相应。示例代码参考如下:

但是 tap 事件在 windows8 触控设备和 android 设备上测试,均有一次点击多次触发的现象。
经测试,tap 方法的响应时间明显快于 onclick 事件,那么我们可以用 click 事件来处理 tap 事件的相应。示例代码参考如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
 <meta charset="utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1.0,  maximum-scale=1.0, user-scalable=0" />
 <title>jquery mobile 的 tap 事件多次触发问题-志文工作室</title>
 <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" />
 <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
 <script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
</head>
<style>
.article{height:10000px;text-align: center}
</style>
<body>
<div data-role='page'>
 <div data-role='header' data-theme='b' data-position='fixed'>
  <a href='https://3water.com' data-icon='home' data-theme='d' data-iconpos='notext' data-transition='turn'>志文工作室</a>
  <h1 role='heading'>志文工作室</h1>
   <a href='#menu-panel' data-icon='bars' data-theme='d' data-iconpos='notext' data-shadow='false' data-iconshadow='false'>菜单</a>
 </div><!-- /header -->
<div data-role='content'> 
  <div id="article" class="article">
   <ol data-role="listview" data-inset="true">
   </ol>
  </div>
 </div>
</div>
<script>
 //轻点屏幕
 //$('div#article').on("tap",function(event){
 $('div#article').on("click",function(event){
  event.stopPropagation();
  console.log(111111);
  if(event.clientY < 80){
  //单击了页面上半部分,则向上滑动
   if(document.body.scrollTop<1) return;
   var scrollPosY = document.body.scrollTop - document.body.clientHeight + 100;
   $.mobile.silentScroll(scrollPosY);
  }else if(event.clientY > document.body.clientHeight - 80){
   var scrollPosY = document.body.scrollTop + document.body.clientHeight - 100;
   if(scrollPosY < document.body.scrollHeight){//顶部覆盖的高度+可见高度<网页体高度,则滚动一屏
    $.mobile.silentScroll(scrollPosY);
   }
  }
 });
 for(var i=1;i<200;i++){
  $('#article ol').append('<li>第 '+ i +' 行:志文工作室</li>');
 }
</script>
</body>
</html>

另外一个替代方法参考:
JQueryMobile 在 Android 设备上的 tap 事件会出现多次触发的问题, 我们的解决方案是使用 Google FastButton,将原来需要用 tap 的地方改用 fastbutton 处理。

另外一个替代方法参考:
JQueryMobile 在 Android 设备上的 tap 事件会出现多次触发的问题, 我们的解决方案是使用 Google FastButton,将原来需要用 tap 的地方改用 fastbutton 处理。

Javascript 相关文章推荐
js 判断checkbox是否选中的操作方法
Nov 09 Javascript
JavaScript 性能优化小结
Oct 12 Javascript
jQuery语法小结(超实用)
Dec 31 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
详解微信小程序Radio选中样式切换
Jul 06 Javascript
vue项目中的webpack-dev-sever配置方法
Dec 14 Javascript
ES6 Proxy实现Vue的变化检测问题
Jun 11 Javascript
JS实现吸顶特效
Jan 08 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
vue+element-ui表格封装tag标签使用插槽
Jun 18 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 Javascript
javascript操作excel生成报表示例
May 08 #Javascript
jquery的ajax跨域请求原理和示例
May 08 #Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 #Javascript
javascript与有限状态机详解
May 08 #Javascript
ajax提交表单实现网页无刷新注册示例
May 08 #Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
May 08 #Javascript
js动态删除div元素基本思路及实现代码
May 08 #Javascript
You might like
10个实用的PHP正则表达式汇总
2014/10/23 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
js读写(删除)Cookie实例详解
2013/04/17 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
Python实现Const详解
2015/01/27 Python
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
python numpy数组中的复制知识解析
2020/02/03 Python
python super函数使用方法详解
2020/02/14 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
机电一体化毕业生求职信
2013/11/02 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
品质口号大全
2014/06/17 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
房地产项目合作意向书
2015/05/08 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书