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 相关文章推荐
JS JavaScript获取Url参数,src属性参数
Mar 09 Javascript
微信分享的标题、缩略图、连接及描述设置方法
Oct 14 Javascript
jQuery中click事件的定义和用法
Dec 20 Javascript
javascript中sort()的用法实例分析
Jan 30 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
jQuery插件zTree实现删除树节点的方法示例
Mar 08 Javascript
Vue 中axios配置实例详解
Jul 27 Javascript
vue+axios 前端实现的常用拦截的代码示例
Aug 23 Javascript
Koa日志中间件封装开发详解
Mar 09 Javascript
vue实现简单的日历效果
Sep 24 Javascript
javascript 高级语法之继承的基本使用方法示例
Nov 11 Javascript
微信小程序实现转盘抽奖
Sep 21 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
JSON.stringify 语法实例讲解
2012/03/14 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
javascript实现日历效果
2019/06/17 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
使用Python的turtle模块画国旗
2019/09/24 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
某公司面试题
2012/03/05 面试题
酒店管理自荐信
2013/10/23 职场文书
关于幼儿的自我评价
2013/12/18 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
合作协议书怎么写
2014/04/18 职场文书
大学班级学风建设方案
2014/05/01 职场文书
卖房协议书样本
2014/10/30 职场文书
道德与公民自我评价
2015/03/09 职场文书
企业战略合作意向书
2015/05/08 职场文书
元旦晚会开场白
2015/05/29 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js