2014-03-24 82 views
3

我對JQuery相當新,並且遇到綁定函數與動態生成的div有關的問題。添加點擊功能動態生成的div jquery

基本上,用戶點擊一個按鈕,它將一對div添加到一個容器,並且還改變了該容器的背景顏色。我希望他們可以選擇通過點擊其中一個div來刪除他們添加的內容。

我有這個功能,我認爲應該這樣做:

$('.course-delete').click(function() { 
    var course = $(this).parent(); 
    alert("hello"); 
    $(course).css('background', "#fff"); 
    $(course).empty(); 
}); 

但是當我點擊的div不管是什麼原因沒有任何反應。如果有人知道發生了什麼,我將不勝感激。

+0

http://stackoverflow.com/questions/8752321/jquery-live-vs-on-method-for-adding-a-click-event-after-loading-dynamic-ht – CBroe

+0

最後一行代碼應該說:$(course).empty(); –

+0

是的,謝謝你。 – kcc989

回答

2

通過它的聲音,當jQuery嘗試綁定處理程序時,您的.course-delete元素不存在 - 因爲您的div將在稍後動態創建。如果是這樣的問題,那麼事件的代表團將是你的救星:https://learn.jquery.com/events/event-delegation/

$(document).on('click', '.course-delete', function() { 
    /* do delete stuff here */ 
}); 
+0

謝謝,這非常有幫助。我在JQuery文檔中做了一些挖掘,但從未偶然發現過。這正是我所需要的。 – kcc989

0

你也可以..

//Create your new DIV 
var newDiv=$('<div />',{ 
html:'This is sample HTML', // add your HTML 
click:function(){ 
// your click event handler 
} 
}); 

,然後添加到您的文檔一樣......

newDiv.appendTo('body');//or any selector you want to append to. Use prependTo if you want it as the first element of the container. 

所以當合並時,你可以這樣寫...

$('<div />',{// you can set attributes and other stuff here 
    html:'This is sample HTML', // add your HTML 
    click:function(){ 
    // your click event handler 
    } 
}).appendTo(container); 
1

將點擊事件委託給最近的容器以獲得更好的性能。

$("#divcontainer").on("click", ".course-delete", function() { 

});