添加insertAfter时找不到Jquery id

时间:2009-12-09 15:28:58

标签: jquery

加载页面后,用户可以添加一些文本,每次添加时,我都会添加一些“x”,以便删除文本。 但是当我在'x'的id上创建一个click事件时,没有任何反应,我无法点击它。

我做错了什么?

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


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

});

2 个答案:

答案 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' ) );