我有一些使用事件和clousure动态创建的DOM元素。
这样的事情:
var container = document.getElementById("container");
var objects = [{ name: "test" }, {name: "test2"}]
for(var i = 0; i < objects.length; i+=1){
var dom = document.createElement("div");
dom.addEventListener("click", (function(obj){
return function(){
alert(obj.name);
};
}(objects[i]), false);
container.appendChild(dom);
}
我的问题是如何使用事件委托?因此所有点击事件都在#container dom上,但仍然有与dom相关联的obj对象。
我想我可以使用另一个对象并将其用作“哈希”-table,使用dom元素和obj,然后在“hash”-table上使用e.target,但是没有更好的解决方案?
答案 0 :(得分:0)
简而言之(未经测试):
var container = document.getElementById("container");
var objects = [{ name: "test" }, {name: "test2"}]
for(var i = 0; i < objects.length; i+=1){
var dom = document.createElement("div");
objects[i].instance = dom;
container.appendChild(dom);
}
container.addEventListener("click",function(event){
for(var i in objects){
if(event.target == objects[i].instance){
alert(objects[i].name);
break;
}
}
}, false);