jQuery基于$.ajax设置移动端click超时处理方法
来源: 阅读:964 次 日期:2016-06-30 16:25:09
温馨提示: 小编为您整理了“jQuery基于$.ajax设置移动端click超时处理方法”,方便广大网友查阅!

这篇文章主要介绍了jQuery基于$.ajax设置移动端click超时处理方法,分析了click事件与touchstart事件的原理与处理技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map