Jquery - 删除附加代码不起作用

时间:2013-10-22 17:21:36

标签: javascript jquery html append

我删除附加代码时遇到问题 尝试添加一些div并检查结果 当您尝试dbclicked on new div时,他不会被删除。

HTML:

<input id="val" name="value" />
<input id="submit" type="button" value="ok" />
<div id="content"></div>

脚本:

$("div[id^='block_']").on('dblclick', function() {
 $(this).remove();
});

$("#submit").click(function(){
 if ( $('#val').val().length > 0 )
 {
  $('#content').append('<div id="block_'+ $('#val').val() +'">'+ $('#val').val() +'</div>');

  $('#val').val('');
 }
});

这是JSFiddle
我使用jquery 2.0.3。

4 个答案:

答案 0 :(得分:1)

绑定click事件时,您的元素不存在。使用委托活动:

$('#content').on('dblclick', "div[id^='block_']", function() {
    $(this).remove();
});

此处提供您需要的所有信息:http://api.jquery.com/on/#direct-and-delegated-events

答案 1 :(得分:1)

由于您的div是动态生成的,因此请使用.on()的事件委派:

$(document.body).on('dblclick',"div[id^='block_']", function() {
    $(this).remove();
});

Fiddle Example

答案 2 :(得分:0)

为什么你的代码中有这个部分?

$("div[id^='block_']").on('dblclick', function() {
 $(this).remove();
});

如果您这样做是因为您想要选择div标签的ID作为选择器,则不必这样做。

例如,如果要删除,则执行此操作:

$("#content").on('dblclick', function() {
 $(this).remove();
});

答案 3 :(得分:0)

另一种方法是创建div并在将事件附加到dom之前分配事件

var div = $('<div id="block_'+ $('#val').val() +'">'+ $('#val').val() +'</div>');

div.on('dblclick',function(){$(this).remove();});
$('#content').append(div);

jfiddle