为什么我的绑定事件没有应用于新创建的元素?
我有一个点击函数,它将图像添加到具有“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");
});
I'm have a click function which adds an image to a div with a class of "selectedimage". I'm trying to create another click function which references "selectedimage", however, it will not initiate. Is this because it didn't exist when the DOM was first loaded? Thanks.
$(".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");
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 .live。
正如您怀疑的那样,这与事件绑定时元素不在 dom 中有关,live 修复了这个问题。
Use .live.
As you suspected it has to do with the element not being in the dom when the event is bound, and live fixes this.
不要使用“bind”,而使用“live”。相同的语法(除了 live 之外)会将事件处理程序应用于任何现有的匹配元素以及任何未来(尚未存在)的匹配元素。
Instead of using "bind", use "live". Same syntax, except live will apply the event handlers to any existing matching elements, and any future (as-yet non-existant) matching elements.
.bind
仅影响 DOM 中已有的元素。要将事件“绑定”到所有现有和未来的元素,请使用
.live
:.bind
only affects elements already in the DOM.To "bind" an event to all existing and future elements, use
.live
: