2009-12-09 87 views
1

加載頁面後,用戶可以添加一些文本,每增加一個,我都會添加一個'x',以便刪除文本。 但是,當我在'x'的id上創建一個點擊事件時,沒有任何反應,我無法點擊它。添加insertAfter時找不到jquery id

我在做什麼錯?

$('<div>blabla<span id="remove">X</span></div>').insertAfter($("#add")); 


$('#remove').click(function(){ 
    $(this).hide(); 

});

回答

4

當您分配單擊事件時,它只會將其添加到文檔中當前的元素,而不會添加未來的元素。您需要使用live功能:

$('#remove').live('click', function(){ /* etc */ }) 

您需要的jQuery 1.3+這個工作。

注意:正如Jan在評論中指出的那樣,每頁只能有一個ID。您應該將「remove」更改爲類,並在上面的代碼中使用$('.remove')

2

既然你有多個這樣的元素,你不能給他們所有的相同的ID。即使你的代碼可以工作,它也只會隱藏跨度而不是DIV。

你應該做這樣的事情:

var newElement = $('<div>blabla<span class="remove">X</span></div>'); 
$('span.remove', newElement).click (function() { 
    $(this).parent().remove(); 
}); 

newElement.insertAfter ($('#add'));