具有每个DOM的关联对象的事件委派

时间:2012-11-30 06:24:22

标签: javascript dom event-delegation

我有一些使用事件和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,但是没有更好的解决方案?

1 个答案:

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