js事件被多次觸發時,如何做到只執行最后一次事件函數


昨天遇到一個問題:微信購物車頁面的數量增減按鈕點擊過快時,input里的值會亂跳

  看了源代碼后發現,每次點擊增減按鈕后,整個購物車區域都通過ajax重新寫入,而ajax寫入是需要時間的,這就導致了點擊過快時頁面異步加載速度跟不上點擊的速度,故此input里面的值會亂跳;

解決方案:

  1、在點擊事件外面申明一個變量

    var iTime;

  2、給ajax的觸發事件添加時間間隔,

    iTime=setTimeout(fun,250);

  3、每次點擊事件觸發時都清除之前的setTimeout事件

    clearTimeout();

最后代碼如下:

  var iTime;

  element.onclick=function(){

    clearTimeout(iTime);

    iTime=setTimeout(fun,250);

  }

其實上面這個方案所解決的就是事件被多次觸發時,只執行最后一次事件,核心思想就是通過設置定時器來控制,通過定時器觸發事件,在多次觸發事件時清除之前的定時器事件,最后給定時器重新賦值,那么不管怎樣都是只會運行最后一次的定時器事件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM