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 相关文章推荐
javscript对象原型的一些看法
Sep 19 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
Oct 27 Javascript
Vue 短信验证码组件开发详解
Feb 14 Javascript
微信小程序 UI与容器组件总结
Feb 21 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
详解angularjs 学习之 scope作用域
Jan 15 Javascript
vue百度地图 + 定位的详解
May 13 Javascript
微信小程序中为什么使用var that=this
Aug 27 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
Vue快速实现通用表单验证的示例代码
Jan 09 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
vue 计算属性和侦听器的使用小结
Jan 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 多维数组排序实现代码
2009/08/05 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
地球物理学专业推荐信
2014/09/08 职场文书
企业务虚会发言材料
2014/10/20 职场文书
党员先进事迹材料
2014/12/19 职场文书
交通事故代理词范文
2015/05/23 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
go类型转换及与C的类型转换方式
2021/05/05 Golang