問題:什麼情況下會發生事件重複綁定?如下面例子
第一次點擊BtnA時,會處理a過程,點擊BtnB時,處理b過程
第二次點擊BtnA時,正常處理a過程,但是點擊BtnB時,b過程處理了兩次
第三次點擊BtnA時,正常處理a過程,但是點擊BtnB時,b過程處理了三次,
以此類推
$('.BtnA').click(function () { console.log('處理a過程') $("#BtnB").click(function () { console.log('處理b過程') }) })
原因:每點擊一次BtnA,都會爲BtnB綁定一次處理b過程的內容,所以BtnA點擊了幾次,去點擊Btnb時,就會觸發幾次b過程的處理
解決辦法:每次點擊BtnA的時候,判斷BtnB是否已經綁定了事件,如果沒有綁定則進行綁定事件(這裏事件就是處理b過程),如果已經綁定事件,那麼可以把BtnB綁定的事件進行解綁,然後重新綁定事件(或者已經綁定,就不做處理),保證BtnB綁定的事件只有一次。
如下:下面是判斷是否綁定,如果是,解綁,重新綁定新的事件
$('.BtnA').click(function () { console.log("綁定處理b過程") //判斷是否綁定了click事件,每點一次編輯按鈕,就會綁定一次保存按鈕的點擊事件,造成多次提交,需要判斷 var objEvt = $._data($('#BtnB')[0], 'events'); if (objEvt && objEvt['click']) { console.log('已經綁定了,進行接觸綁定'); $('#BtnB').unbind('click') } console.log('沒有綁定'); $("#BtnB").click(function () { consle.log("綁定處理b過程") }) })