Jquery?on("click")方法綁定事件后執(zhí)行多次的解決方法
一、發(fā)現(xiàn)問題
在開發(fā)過程中,無意發(fā)現(xiàn)頁面彈窗按鈕的點擊事件使用on
函數(shù)綁定click
時,產生多次請求,從而可能會造成不必要的資源消耗。
舉例:
頁面按鈕:
代碼片段:
let drBox = $('#choiceDetailPopup'), // 提交 console.log("submitTask start"); drBox.on('click','#submitTask',function(){ console.log("submitTask click"); // 處理自己的業(yè)務邏輯 …… })
瀏覽器console:
二、解決問題
使用js動態(tà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è)務邏輯 …… })
修改后,瀏覽器console如下:
事件觸發(fā)正常了。
實際的場景可能會復雜得多,因此在使用on()方法給元素綁定事件的時候要格外注意多次重復綁定的問題。
總結
相關文章
jquery attr 設定src中含有&(宏)符號問題的解決方法
今天在用 jquery 的attr 方法設定 iframe的src屬性的時候遇到了一個奇怪的為題,現(xiàn)在把問題及解決方面寫出來,讓遇到同樣問題的人不要在走彎路。2011-07-07jQuery 移動端拖拽(模塊化開發(fā),觸摸事件,webpack)
這篇文章主要介紹了jQuery 移動端拖拽(模塊化開發(fā),觸摸事件,webpack)的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-10-10jquery設置元素的readonly和disabled的寫法
Jquery的api中提供了對元素應用disabled和readonly屬性的方法,在這里記錄下,感興趣的朋友可以練練手了2013-09-09jQuery/$ is not defined報錯的幾種解決方法
jQuery最常見的錯誤之一是$ is not defined錯誤,本文主要介紹了jQuery/$ is not defined報錯的幾種解決方法,具有一定的參考價值,感興趣的可以了解一下2024-02-02