我已经通过jQuery创建了一个新标签,代码如下:
new_compare_item = $("<div/>");
new_compare_item.attr("id", "compare_item");
new_compare_item.attr("name", "compare_item");
new_compare_item.addClass("div_image");
new_compare_item.append($("<img/>")
.addClass("image")
.attr("src", "/compare/sites/default/files/add_item.jpg")
.attr("height", 50)
.attr("width", 50));
new_compare_item.append($("<span/>")
.addClass("remove_item")
.click(function(){
$(this).parent().remove();
}));
有一个click事件会再次删除上面生成的div标签。代码是这样的:
$(".remove_item").click(function(){
var id = $(this).parent().attr("id");
var remove_item_id = document.getElementById(id);
$("div#"+id).remove();
)};
但是,它无法找到新创建的新创建的div标签。我也用javascript取代了这个,但没用。事情是它找不到新创建的div标签的id。怎么解决?
答案 0 :(得分:2)
而不是$(".remove_item").click(function(){ /* CODE */}
使用$(".remove_item").live('click',function(){ /* CODE */}
之间的区别,您可以在此处看到jQuery live()
答案 1 :(得分:0)
见句法:
$("div#"+id).remove();
//Change to
$("#"+id).remove(); OR
$("div[id='"+id+"']").remove();
答案 2 :(得分:0)
首先,
new_compare_item = $("<div/>");
new_compare_item.attr("id", "compare_item");
new_compare_item.attr("name", "compare_item");
new_compare_item.addClass("div_image");
new_compare_item.append($("<img/>")
.addClass("image")
.attr("src", "/compare/sites/default/files/add_item.jpg")
.attr("height", 50)
.attr("width", 50));
new_compare_item.append($("<span/>")
.addClass("remove_item")
.click(function(){
$(this).parent().remove();
}));
$('body').append(new_compare_item);
工作正常。我测试了jQuery v1.7.1
其次,
$(".remove_item").click(function(){
var id = $(this).parent().attr("id");
var remove_item_id = document.getElementById(id);
$("div#"+id).remove();
)};
这是不正确的。应该是});
而不是)};
。您应该使用.live('click',function(){})
而不是.click(function(){})
,因为您动态地向DOM添加了div。见jQuery API