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 相关文章推荐
jquery数组封装使用方法分享(jquery数组遍历)
Mar 25 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
详解Vue方法与事件
Mar 09 Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 Javascript
Node.js中的http请求客户端示例(request client)
May 04 Javascript
JQuery实现图片轮播效果
May 08 jQuery
基于vue实现可搜索下拉框定制组件
Mar 26 Javascript
JavaScript原型对象原理与应用分析
Dec 27 Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 Javascript
Vue 组件参数校验与非props特性的方法
Feb 12 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 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笔记之:日期函数的使用介绍
2013/04/24 PHP
php不用正则验证真假身份证
2013/11/06 PHP
php中stream(流)的用法
2014/03/25 PHP
PHP类的特性实例分析
2016/09/28 PHP
php字符集转换
2017/01/23 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
Django中提示消息messages的设置方式
2019/11/15 Python
没编程基础可以学python吗
2020/06/17 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
高考考python编程是真的吗
2020/07/20 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
市场拓展计划书
2014/05/03 职场文书
大学军训通讯稿
2015/07/18 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
win sever 2022如何占用操作主机角色
2022/06/25 Servers