2013-07-26 113 views
1

所以我用jQuery「.on」函數和動態創建的元素有一些令人不安的結果,我使用的代碼是這樣的:jQuery .on(「click」...)帶有動態創建的元素不起作用

這就是所謂的功能運行時的某個隨機:

$(".activity-feed").append('<div class="feed-story big-feed-story feed-story-comment multiline-feed-story">\ 
     <div class="photo-view inbox-size photo-view-rounded-corners">\ 
      <div class="comment-icon">\ 
      </div>\ 
     </div>\ 
     <div class="comment-content">\ 
      <div class="delete ucomment-delete click-target" id="ucomment-'+uqid+'" tabindex="-1" style="outline:none;"></div>\ 
      <span class="feed-story-creator"><a href="/user/'+uid+'/'+username+'">'+username+'</a>&nbsp;</span>\ 
       <span class="comment-text">\ 
        <span>\ 
         <span style="white-space: pre-wrap;">'+$(".comment-box").html()+'</span>\ 
        </span>\ 
       </span>\ 
      <div>\ 
       <span class="feed-story-footer"><span class="story-timestamp-view">'+time+'</span></span>\ 
      </div>\ 
     </div>\ 
    </div>'); 

,然後這個功能應該允許發表評論刪除(其在頁面的底部,而不是文件準備好之後定義)

$(".delete").on("click", function() { 
    alert('test....'); 
}); 

然而,我點擊「ucomment-delete」按鈕,並沒有任何反應:(但是,如果我點擊那裏的加載評論,它的工作原理
這是爲什麼?我究竟做錯了什麼?

回答

10

嘗試事件代表團

$(document).on("click", ".delete", function() { 
alert(); 
}); 
+0

適用於動態創建的評論,但它停止工作的靜態創建的評論(它們由PHP輸出前加載):/ – King

+1

你應該註冊文件準備 –

+0

我已經把它放在$(文件).ready(function(){..});'但我仍然有相同的問題 – King

0

如果on不工作,然後你的jquery不是最新版本試試delegate

$('body').delegate('.delete','click',function(){ 
//stuff 
}); 
1

你需要將其綁定到已經存在的頁面,然後在一個元素可以指定頁面上可能尚不存在的元素的選擇器:

$(".activity-feed").on("click",".delete", function() { 
    alert('test....'); 
}); 

看到這個搗鼓一個例子:

http://jsfiddle.net/G4MGZ/

0

.on()必須被包裹在一個document.ready(),即使是在文件的結尾。我認爲@John Koemer所說的也是如此。

相關問題