2015-07-21 96 views
0

我有一個通過另一個php腳本獲取其內容的模式。內容隨後加載用戶選擇的ID並使其能夠編輯內容。不止一次Javascript觸發事件

模態本身在一個單獨的動態容器中加載到此之上。

的問題是這樣的:

首次點擊模式:1點觸發的事件。

第二次:模態事件觸發2次。

第三次:事件觸發3次

等等...

我試過唯一ID和事件解除綁定,沒有運氣 - 任何想法? 我已經閱讀了一些問題,但還沒有遇到適合我的解決方案。

我的代碼:

<script type="text/javascript"> 
$('.modal-launcher'+rates_randid+'').unbind('click').click(function(e){ 
    //modal and modal body selection 
    var modal = $('#modal_launcher'+modalid+''), modalBody = $('.modal-loader-content'+modalid+''); 
    //Gets ID for the rate that needs editing. 
    rateid = $(this).data('rateid'); 
    //on show of modal send ID and grab page/contents 
    modal.on('show.bs.modal', function() { 
      $.post('pages/edit_rate_modal.php?rateid='+rateid+'',{func:'edit'}) 
     .done(function(data){ 
      $('.modal-loader-content'+modalid+'').html(data); 
     }) 
     }) 
    //show modal 
     .modal(); 
    e.preventDefault(); 
}); 

$('#modal_launcher').on('hidden.bs.modal', function (e) { 
    $('.modal-loader-content').empty(); 
}) 
</script> 
+2

每次點擊時,您都會綁定一個新的「show.bs.modal」事件。所以不要嵌套事件或至少嘗試:'modal.one('show.bs.modal',function(){...});' –

+0

啊!謝謝!!太精彩了! 是的,當我添加下一頁的模態窗口時,我將重寫這部分內容。剛剛沒有決定我想如何分享它。 雖然非常感謝! –

+0

你可以把它彈出來答案,所以我可以接受,作爲解決方案 –

回答

1

您可以使用jQuery one()到模式顯示事件只有一次綁定:

modal.one('show.bs.modal', function() { 
    $.post('pages/edit_rate_modal.php?rateid=' + rateid, { 
     func: 'edit' 
    }) 
     .done(function (data) { 
     $('.modal-loader-content' + modalid).html(data); 
    }) 
}) 
//show modal 
.modal(); 

但是你最好的選擇將是不能嵌套單擊處理程序內此事件。