addEventListener 用于多个动态生成的元素
addEventListener for multiple dynamic generated elements
为了在 chrome 应用程序中使用代码,我需要从 onclick
切换到 addEventListener
。
我动态添加了一些 img 到 DOM。我想在单击 imgBox 时执行调整大小功能。使用 onclick
它有效。但是用我的新方法只有最后添加的 imgBox 有一个有效的事件监听器。为什么?
function addImgBox (baseImgUrl, id) {
var imgBoxHtml = "<div id='box-"+id+"'><img id='img-" + id + "' src='" + baseImgUrl + id + ".ipg'></div>"
document.getElementById("insert-loding-ImgBoxes-here").innerHTML += imgBoxHtml;
var loadImg = document.getElementById('img-' + id); // catching the new img element
loadImg.onload = function() {
... moving the imgbox to an other place in DOM here ...
document.getElementById('box-' + id).addEventListener("click", function(event) {
fullsize(id);
},false);
}
}
addImgBox('image_no_',1);
addImgBox('image_no_',2);
addImgBox('image_no_',3);
当您更改 innerHTML 时,浏览器会删除所有子节点并插入没有事件侦听器的新子节点
为了在 chrome 应用程序中使用代码,我需要从 onclick
切换到 addEventListener
。
我动态添加了一些 img 到 DOM。我想在单击 imgBox 时执行调整大小功能。使用 onclick
它有效。但是用我的新方法只有最后添加的 imgBox 有一个有效的事件监听器。为什么?
function addImgBox (baseImgUrl, id) {
var imgBoxHtml = "<div id='box-"+id+"'><img id='img-" + id + "' src='" + baseImgUrl + id + ".ipg'></div>"
document.getElementById("insert-loding-ImgBoxes-here").innerHTML += imgBoxHtml;
var loadImg = document.getElementById('img-' + id); // catching the new img element
loadImg.onload = function() {
... moving the imgbox to an other place in DOM here ...
document.getElementById('box-' + id).addEventListener("click", function(event) {
fullsize(id);
},false);
}
}
addImgBox('image_no_',1);
addImgBox('image_no_',2);
addImgBox('image_no_',3);
当您更改 innerHTML 时,浏览器会删除所有子节点并插入没有事件侦听器的新子节点