解決bootstrap的模態框shown.bs.modal、hidden.bs.modal函數重複觸發的問題

Bootstrap 的模態框類提供了一些事件用於監聽並執行你自己的代碼。

事件類型 描述

show.bs.modal show 方法調用之後立即觸發該事件。如果是通過點擊某個作爲觸發器的 元素,則此元素可以通過事件的relatedTarget 屬性進行訪問。
shown.bs.modal 此事件在模態框已經顯示出來(並且同時在 CSS 過渡效果完成)之後被觸 發。如果是通過點擊某個作爲觸發器的元素,則此元素可以通過事件 的 relatedTarget 屬性進行訪問。
hide.bs.modal hide 方法調用之後立即觸發該事件。
hidden.bs.modal 此事件在模態框被隱藏(並且同時在 CSS 過渡效果完成)之後被觸發。
loaded.bs.modal 從遠端的數據源加載完數據之後觸發該事件。

      在今天調試代碼的時候,發現了一個問題,手動打開模態框時,每打開一次,shown.bs.modal函數觸發次數就會+1,例如第一次打開,觸發shown.bs.modal函數一次,第二次打開,觸發shown.bs.modal函數兩次... 第N次打開,觸發shown.bs.modal函數N次。

      出現這種情況,可以從綁定事件的地方下手,觸發多次,說明綁定了多次此事件,拿jquery來說,因爲採用jQuery .on()  方式綁定鉤子事件,如果沒有把綁定事件的函數放在最外層,而是放在局部,就會造成多次綁定的現象發生,所有我們可以使用jquery 的 .off() 方式去移除掉已經綁定事件的操作,保證事件只綁定一次,進而解決問題。

實現代碼:

$('#zdyCo_Modal').on('shown.bs.modal', function () {
      // 執行一些動作...
     create_tj_table(Data_table,val_field,val_conds);
     $('#zdyCo_Modal').off('shown.bs.modal');//去除綁定
})

 

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