加载页面后,用户可以添加一些文本,每次添加时,我都会添加一些“x”,以便删除文本。 但是当我在'x'的id上创建一个click事件时,没有任何反应,我无法点击它。
我做错了什么?
$('<div>blabla<span id="remove">X</span></div>').insertAfter($("#add"));
$('#remove').click(function(){
$(this).hide();
});
答案 0 :(得分:4)
分配click事件时,它只会将其添加到文档中当前的元素,而不是将来添加的元素。您需要使用live
函数:
$('#remove').live( 'click', function(){ /* etc */ })
你需要jQuery 1.3+来实现这个目的。
注意:正如Jan在评论中指出的那样,每页只能有一个ID。您应该将“删除”更改为类,并在上面的代码中使用$('.remove')
。
答案 1 :(得分:2)
由于您拥有多个元素,因此无法为所有元素提供相同的ID。即使你的代码有效,它也只能隐藏跨度而不是DIV。
你应该这样做:
var newElement = $( '<div>blabla<span class="remove">X</span></div>' );
$( 'span.remove', newElement ).click ( function () {
$( this ).parent ().remove ();
} );
newElement.insertAfter ( $( '#add' ) );