2009-12-09 114 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'));