2017-03-16 35 views
0

我加載動態內容是這樣的:點擊動態加載的內容迭代事件

$('.cPopUpOverlay').fadeIn('fast'); 
$('.cPopUpOverlay').append('<div class=\'cPopUpContent\'></div>'); 
$('.cPopUpContent').load('popups/popup_1.php'); 
$('.cPopUpContent').fadeIn('fast'); 

的popup_1.php有一些數據+一個簡單的按鈕。

<input type='button' id='btn_action_add' action='add' value='add'> 

再次,從哪裏執行的第一4行的代碼的頁面存在,這是:

$('.cPopUpOverlay').on('click', 'input[type=\'button\']', function() { 
    console.log('clicked'); 
    $('.cPopUpOverlay').fadeOut(); 
    $('.cPopUpOverlay').html(''); 
} 

基本上,它發送「點擊」到控制檯,並刪除popup_1.php的內容並關閉它。

這一切運作良好。除...當我打開彈出窗口時,控制檯顯示「clicked」,當我重新打開彈出窗口時,它顯示「clicked(3)」。再次關閉後,點擊它顯示「點擊(6)」

每當我重新打開彈出窗口,它會執行點擊n次,其中n是我打開彈出窗口的次數。這就像點擊事件保持在某個地方一樣,一次又一次地執行,就好像每次打開彈出窗口時都有一個額外的按鈕,在.on('click')事件觸發時會被評估。

我不明白這是爲什麼。我使用以下內容清除內容:

$('.cPopUpOverlay').fadeOut(); 
$('.cPopUpOverlay').html(''); 

任何想法?

+0

你能告訴我們整個代碼嗎?看起來你是在每次點擊時重新聲明聽衆 – amenadiel

+0

就是這樣。非常明顯。很尷尬在這裏... – nickvandyck

回答

0

由於Amenadiel建議......我重新聲明每次點擊收聽。很顯然我錯過了。對不起: -/