如何找到jQuery生成的div标签

时间:2012-02-27 06:29:43

标签: jquery html

我已经通过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。怎么解决?

3 个答案:

答案 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