jQuery基于$.ajax设置移动端click超时处理方法


Posted in Javascript onMay 14, 2016

本文实例讲述了jQuery基于$.ajax设置移动端click超时处理方法。分享给大家供大家参考,具体如下:

这里介绍jquery click事件如何在移动端自动转换成touchstart事件。

因为移动端click事件会比touchstart事件慢几拍

移动设备某个元素上事件执行顺序是:

touchstart

touchmove

touchend

click{mousedown->mousemove->mouseup}

click事件在移动设备上虽然会识别但却是最后一个执行的,所以如果不把click事件换成touchstart事件的话,就可能造成延时导致交互上也慢了几拍

所以在移动端最好把click事件换成touchstart事件。

那么如何添加事件比较简单呢.

于是乎有了以下这种写法:

var handle = function (e) {
e.preventDefault(); // 阻止浏览器默认行为

alert('fuck world');
}
$('body').on('touchstart mousedown', handle );

这样在pc端浏览器上面alert只执行一次,触发的事件是mousedown

在ios设备safari浏览器上面alert也只执行一次,触发的事件是touchstart

为什么只执行一次?

秘密在于当执行的是touchstart后,preventDefault掉了后面的click就不执行了,“非常完美”.

^_^! 一如既往的android设备蛋疼是必须的,测试发现除qq浏览器外其它浏览器都会alert两次

也就是说touchstart和mousedown的handle函数都执行了, 似乎是e.preventDefault()没有起作用。具体原因不明...

因为要兼容,所以就没办法了只能通过判断是否支持touch事件来分别添加事件了..

那就扩展一个jquery方法插件吧仿一个on方法的插件方法比如名称为quickOn,(如果你连on方法怎么用都不知道,那你就走吧,离开这里...)

;(function(){
  var isTouch = ('ontouchstart' in document.documentElement) ? 'touchstart' : 'click';
 if(!$.fn.quickOn){
   $.fn.quickOn= function(){
    arguments[0] = (arguments[0] === 'click') ? isTouch: arguments[0];
    return $.fn.on.apply(this, arguments);
   };
  }
})();

quickOn虽然名字尴尬了一点,但是能用,例如:

$('body').quickOn('click', function(){
 alert('fuck world') ;
})

额。。后来想想,为什么不直接重载jquery的on方法呢??

来吧,试试

;(function(){
  var isTouch = ('ontouchstart' in document.documentElement) ? 'touchstart' : 'click', _on = $.fn.on;
   $.fn.on = function(){
    arguments[0] = (arguments[0] === 'click') ? isTouch: arguments[0];
    return _on.apply(this, arguments);
   };
})();

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
Jan 13 Javascript
纯javascript实现四方向文本无缝滚动效果
Jun 16 Javascript
PassWord输入框代码分享
Jun 07 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
详解Vue 开发模式下跨域问题
Jun 06 Javascript
js实现随机点名小功能
Aug 17 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
Sep 05 Javascript
微信小程序位置授权处理方法
Jun 13 Javascript
微信小程序动态设置图片大小的方法
Nov 21 Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 27 Javascript
React服务端渲染原理解析与实践
Mar 04 Javascript
jQuery基于扩展实现的倒计时效果
May 14 #Javascript
Angularjs中UI Router的使用方法
May 14 #Javascript
两种js监听滚轮事件的实现方法
May 13 #Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 #Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 #Javascript
AngularJS在IE8的不支持的解决方法
May 13 #Javascript
基于jquery插件实现拖拽删除图片功能
Aug 27 #Javascript
You might like
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
Python调用命令行进度条的方法
2015/05/05 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
Python检测数据类型的方法总结
2019/05/20 Python
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
AOP的定义以及作用
2013/09/08 面试题
函授教育个人学习的自我评价
2013/12/31 职场文书
《火烧云》教学反思
2014/04/12 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
军训拉歌口号
2014/06/13 职场文书
雷人标语集锦
2014/06/19 职场文书
工程部部长岗位职责
2015/02/12 职场文书
红楼梦读书笔记
2015/06/25 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js