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 相关文章推荐
网页里控制图片大小的相关代码
Jun 25 Javascript
js跨域和ajax 跨域问题的实现思路
Sep 05 Javascript
HTML5附件拖拽上传drop & google.gears实现代码
Apr 28 Javascript
鼠标滑过出现预览的大图提示效果
Feb 26 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
js+css简单实现网页换肤效果
Dec 29 Javascript
webpack4 处理CSS的方法示例
Sep 03 Javascript
react写一个select组件的实现代码
Apr 03 Javascript
layui表格 列自动适应大小失效的解决方法
Sep 06 Javascript
react 不用插件实现数字滚动的效果示例
Apr 14 Javascript
js实现页面导航层级指示效果
Aug 25 Javascript
ES2020让代码更优美的运算符 (?.) (??)
Jan 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
是否存在第一台收音机的说法
2021/03/01 无线电
PHP生成数组再传给js的方法
2014/08/07 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
Expandable "Detail" Table Rows
2007/08/29 Javascript
jQuery 表格插件整理
2010/04/27 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
Python中的集合类型知识讲解
2015/08/19 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python中的Numpy矩阵操作
2018/08/12 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
浅析python中while循环和for循环
2019/11/19 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
音乐教师求职信
2014/06/28 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
python glom模块的使用简介
2021/04/13 Python
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
把77A收信机改造成收音机
2022/04/05 无线电