jQuery基於$.ajax設定移動端click逾時處理方法_jquery

來源:互聯網
上載者:User

本文執行個體講述了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相關內容感興趣的讀者可查看本站專題:《jquery中Ajax用法總結》、《jQuery切換特效與技巧總結》、《jQuery拖拽特效與技巧總結》、《jQuery擴充技巧總結》、《jQuery常見經典特效匯總》、《jQuery動畫與特效用法總結》、《jquery選取器用法總結》及《jQuery常用外掛程式及用法總結》

希望本文所述對大家jQuery程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.