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 相关文章推荐
详解JavaScript中void语句的使用
Jun 04 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
JavaScript+html5 canvas绘制的小人效果
Jan 27 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
基于javascript制作微博发布栏效果
Apr 04 Javascript
vue组件实例解析
Jan 10 Javascript
jquery表单插件form使用方法详解
Jan 20 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
Apr 04 Javascript
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 jQuery
jQuery插件jsonview展示json数据
May 26 jQuery
vue的for循环使用方法
Feb 12 Javascript
node-red File读取好保存实例讲解
Sep 11 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编程习惯助你找工作
2008/09/29 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
深入理解js中this的用法
2016/05/28 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
js+css3实现旋转效果
2017/01/20 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
js实现随机8位验证码
2020/07/24 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
家长对学生的评语
2014/04/18 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
小学生运动会广播
2015/08/19 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript