Jquery?on("click")方法綁定事件后執(zhí)行多次的解決方法
一、發(fā)現(xiàn)問題
在開發(fā)過程中,無意發(fā)現(xiàn)頁面彈窗按鈕的點擊事件使用on
函數(shù)綁定click
時,產(chǎn)生多次請求,從而可能會造成不必要的資源消耗。
舉例:
頁面按鈕:
代碼片段:
let drBox = $('#choiceDetailPopup'), // 提交 console.log("submitTask start"); drBox.on('click','#submitTask',function(){ console.log("submitTask click"); // 處理自己的業(yè)務(wù)邏輯 …… })
瀏覽器console:
二、解決問題
使用js動態(tài)加載內(nèi)容,同時需要對加入的內(nèi)容綁定點擊事件的,on(‘click’,function(){})
對同一個元素多次綁定同一個事件的時候,這個事件就會執(zhí)行多次。
在每次綁定事件之前,對該事件解綁,可以使用的辦法:
.off(“click”); //解除綁定點擊事件 .unbind("click");//移除綁定點擊事件 .unbind(); //移除所有綁定事件
我采用第一種辦法,直接在 on
綁定 click
前,先釋放,再綁定。
原代碼片段修改如下:
let drBox = $('#choiceDetailPopup'), // 提交 console.log("submitTask start"); drBox.off('click').on('click','#submitTask',function(){ console.log("submitTask click"); // 處理自己的業(yè)務(wù)邏輯 …… })
修改后,瀏覽器console如下:
事件觸發(fā)正常了。
實際的場景可能會復(fù)雜得多,因此在使用on()方法給元素綁定事件的時候要格外注意多次重復(fù)綁定的問題。
總結(jié)
相關(guān)文章
在jQuery中使用$而避免跟其它庫產(chǎn)生沖突的方法
這篇文章主要介紹了在jQuery中使用$而避免跟其它庫產(chǎn)生沖突的方法,總共羅列了三種,需要的朋友可以參考下2015-08-08jquery attr 設(shè)定src中含有&(宏)符號問題的解決方法
今天在用 jquery 的attr 方法設(shè)定 iframe的src屬性的時候遇到了一個奇怪的為題,現(xiàn)在把問題及解決方面寫出來,讓遇到同樣問題的人不要在走彎路。2011-07-07jQuery 移動端拖拽(模塊化開發(fā),觸摸事件,webpack)
這篇文章主要介紹了jQuery 移動端拖拽(模塊化開發(fā),觸摸事件,webpack)的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-10-10jquery設(shè)置元素的readonly和disabled的寫法
Jquery的api中提供了對元素應(yīng)用disabled和readonly屬性的方法,在這里記錄下,感興趣的朋友可以練練手了2013-09-09淺析JQuery UI Dialog的樣式設(shè)置問題
本篇文章主要是對JQuery中UI Dialog的樣式設(shè)置問題進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12jQuery/$ is not defined報錯的幾種解決方法
jQuery最常見的錯誤之一是$ is not defined錯誤,本文主要介紹了jQuery/$ is not defined報錯的幾種解決方法,具有一定的參考價值,感興趣的可以了解一下2024-02-02