十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹jQuery中怎么防止相同事件快速重復(fù)觸發(fā),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
西市網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),西市網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為西市成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的西市做網(wǎng)站的公司定做!
重復(fù)觸發(fā)就是防止用戶重復(fù)點(diǎn)擊提交數(shù)據(jù)了,我們一般都是點(diǎn)擊之后沒(méi)反應(yīng)會(huì)再次點(diǎn)擊了,這個(gè)不但要從用戶體驗(yàn)上來(lái)做好,還在要js或php程序腳本上做好,讓用戶知道點(diǎn)擊是己提交服務(wù)器正在處理,下面我就整理從腳本上來(lái)處理此重復(fù)觸發(fā)的問(wèn)題。
很多時(shí)候事件會(huì)被快速重復(fù)觸發(fā),比如 click,這樣就會(huì)執(zhí)行兩次代碼,造成很多后果。現(xiàn)在有比較多的解決方法,但幾乎都有局限性,比如一個(gè) Ajax 表單,如果防止用戶一次點(diǎn)好多下可以在第一次點(diǎn)擊的時(shí)候凍結(jié)提交按鈕,直到允許再次點(diǎn)擊的時(shí)候再放開(kāi)。很多人都這樣干,但在其他的情況就不是很有效了。
下面推薦一個(gè)不錯(cuò)的方法,首先丟一個(gè)函數(shù)進(jìn)去。
var _timer = {}; function delay_till_last(id, fn, wait) { if (_timer[id]) { window.clearTimeout(_timer[id]); delete _timer[id]; } return _timer[id] = window.setTimeout(function() { fn(); delete _timer[id]; }, wait); }
使用方法
$dom.on('click', function() { delay_till_last('id', function() {//注意 id 是唯一的 //響應(yīng)事件 }, 300); });
上面的代碼可以讓點(diǎn)擊之后等待 300 毫秒,如果在 300 毫秒內(nèi)又發(fā)生了這個(gè)事件則廢除上一次點(diǎn)擊,重新計(jì)時(shí),反復(fù)如此,直到完全等待了 300 毫秒再響應(yīng)事件。
這個(gè)函數(shù)很有用的,比如驗(yàn)證輸入或者根據(jù)輸入的郵箱實(shí)時(shí)拉去頭像而不用等到必須失焦再拉取。
例子
按鈕BUTTON類
a標(biāo)簽類
對(duì)于第一類情況,button有一個(gè)屬性是disabled控制其是否可以點(diǎn)擊,看代碼
以上是“jQuery中怎么防止相同事件快速重復(fù)觸發(fā)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!