Jquery事件嵌套導致事件重複綁定

問題:什麼情況下會發生事件重複綁定?如下面例子

第一次點擊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過程")
    })
})


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章