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扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 Javascript
JavaScript正则表达式之multiline属性的应用
Jun 16 Javascript
jquery自定义表格样式
Nov 23 Javascript
AngularJs bootstrap搭载前台框架——基础页面
Sep 01 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
解决Vue页面固定滚动位置的处理办法
Jul 13 Javascript
JS路由跳转的简单实现代码
Sep 21 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 Javascript
node-red File读取好保存实例讲解
Sep 11 Javascript
小程序自定义圆形进度条
Nov 17 Javascript
js观察者模式的弹幕案例
Nov 23 Javascript
Vue3配置axios跨域实现过程解析
Nov 25 Vue.js
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中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php开启openssl的方法
2014/05/15 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
详解Python如何获取列表(List)的中位数
2016/08/12 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
python计算无向图节点度的实例代码
2019/11/22 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
如何通过python计算圆周率PI
2020/11/11 Python
css sprite简单实例
2016/05/23 HTML / CSS
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
保密普查工作实施方案
2014/02/25 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
12岁生日演讲稿
2014/05/14 职场文书
大学生创业计划书
2014/08/14 职场文书
卖房授权委托书样本
2014/10/05 职场文书
倡议书怎么写?
2019/04/11 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers