2014-11-08 72 views
0

該函數創建酥料餅(引導)複製Ajax調用jQuery中環

$(document).ready(function() { 
    //loop as there are pages with more than one popover 
    $('.pop').each(function() { 
     var $elem = $(this); 
     $elem.popover(param); //triggers popover      
     $elem.on('click', '.add_to_top', function() {           
      top_modal.modal('show'); //opens modal where form is 
      //inside the modal is a form 
      $(top_modal).on('click', '.add_top_submit', function() { 
       //this submits a form where the ajax call is 
      }); 
     }); 
    }); 
}); 

的問題是,如果例如,提交表單按鈕被點擊並拋出一個錯誤,然後重新提交Ajax請求被髮送兩次。每次.add_top_submit被點擊由不同popover觸發的模式時,ajax調用會再次進行。

如果頁面上有多個彈出窗口,並且模式是由兩個不同的彈出窗口觸發的,則ajax請求也會經歷多次。

有沒有辦法「重置」on(),所以它總是被點擊,就好像它是第一次?

回答

1

有沒有辦法在()上「重置」,所以它總是被點擊,就好像它是第一次一樣?

您可以使用off()然後on()來重置事件處理程序。 http://api.jquery.com/off/

0

這就是我所做的修復它。在觸發功能的最終形式的端部,添加此:

    top_modal.die(); //unbinds all events 
        top_modal.on('click'); //rebind click in case form is submitted again 
+0

FYI ['活()'](http://api.jquery.com/live)是一種方法已過時... – 2014-11-08 16:14:42

+0

@TJ live()的另一種選擇是什麼? – Callombert 2014-11-08 21:34:06

+0

live從'1.7'開始棄用,從'1.9 +'中刪除...從'1.7'開始使用['on()'](http://api.jquery.com/on) – 2014-11-09 05:49:49