为什么我的绑定事件不适用于新创建的元素?

时间:2011-09-09 00:34:52

标签: jquery click bind

我有一个点击功能,可以将图像添加到具有“selectedimage”类的div中。我正在尝试创建另一个引用“selectedimage”的点击功能,但是,它不会启动。这是因为首次加载DOM时它不存在吗?感谢。

$(".articlethumb").bind('click', function() {
var currentid = $(this).attr("id");
var medium = $(this).find(".thumb-medium").text();
var mediumimage = "<img id='" + currentid + "' class='selectedimage' src='" + medium + "' />";
$("#mainimage").html(mediumimage);
});

$(".selectedimage").bind('click', function() {
alert("test");
});

3 个答案:

答案 0 :(得分:1)

使用.live

$('.articlethumb').live('click',function(){
    your code here
})

正如您所怀疑的那样,当事件被绑定时,它与不在dom中的元素有关,并且实时修复了这个问题。

答案 1 :(得分:1)

使用“live”而不是使用“bind”。除了live之外,相同的语法将事件处理程序应用于任何现有的匹配元素,以及任何未来(尚未存在的)匹配元素。

答案 2 :(得分:1)

.bind仅影响DOM中已有的元素。

要将事件“绑定”到所有现有和未来元素,请使用.live

$('selector').live(click, function() {

});