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代码
Aug 22 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
Apr 24 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
Jun 06 Javascript
form.submit()不能提交表单的错误原因及解决方法
Oct 13 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
jQuery的bind()方法使用详解
Jul 15 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
Sep 17 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
HTML的select控件美化
Mar 27 Javascript
简单实现jQuery弹窗效果
Oct 30 jQuery
vue实现一个炫酷的日历组件
Oct 08 Javascript
小程序云开发实战小结
Oct 25 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
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php查询ip所在地的方法
2014/12/05 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
电子商务专业个人的自我评价分享
2013/10/29 职场文书
大学生职业规划论文
2014/01/11 职场文书
安全施工标语
2014/06/07 职场文书
医学生求职自荐书
2014/06/12 职场文书
导游词之镇江焦山
2019/11/21 职场文书
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python