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 相关文章推荐
javascript 面向对象编程基础:封装
Aug 21 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
Jan 13 Javascript
Javascript算符的优先级介绍
Mar 20 Javascript
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
jQuery模拟黑客帝国矩阵效果实例
Jun 28 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
JS异步文件分片断点上传的实现思路
Dec 25 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
JavaScript模拟实现网易云轮播效果
Apr 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
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
javascript 学习笔记(onchange等)
2010/11/14 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python 文件重命名工具代码
2009/07/26 Python
python轻松实现代码编码格式转换
2015/03/26 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python调用自定义函数的实例操作
2019/06/26 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
幼儿园秋游活动方案
2014/01/21 职场文书
授权委托书怎么写
2014/04/03 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
交通事故协议书范本
2014/11/18 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
详解nginx location指令
2022/01/18 Servers