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.autocomplete 支持中文输入(firefox)修正方法
Mar 10 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
js 事件截取enter按键页面提交事件示例代码
Mar 04 Javascript
jquery移除、绑定、触发元素事件使用示例详解
Apr 10 Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
May 16 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
May 26 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
基于Vue和Element-Ui搭建项目的方法
Sep 06 Javascript
JavaScript React如何修改默认端口号方法详解
Jul 28 Javascript
浅谈实现在线预览PDF的几种解决办法
Aug 10 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 intval的测试代码发现问题
2008/07/27 PHP
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
jqTransform美化表单
2015/10/10 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
JS实现滑动插件
2020/01/15 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
深入理解Python中的*重复运算符
2017/10/28 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Python列表与元组的异同详解
2019/07/02 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
python 求10个数的平均数实例
2019/12/16 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
python Zmail模块简介与使用示例
2020/12/19 Python
小学生自我鉴定
2013/10/12 职场文书
项目考察欢迎辞
2014/01/17 职场文书
家长评语和期望
2014/02/10 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
学校联谊协议书
2014/09/16 职场文书
房产协议书范本
2014/10/18 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
民政局未婚证明
2015/06/15 职场文书
2015年除四害工作总结
2015/07/23 职场文书
导游词之张家口
2019/12/13 职场文书
一起来学习Python的元组和列表
2022/03/13 Python