0

我有一些 DOM 元素是通过事件和 clousure 动态创建的。

像这样的东西:

    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-object。

我想我可以使用另一个对象并将其用作“散列”表,带有 dom 元素和 obj,然后在“散列”表上使用 e.target,但没有更好的解决方案吗?

4

1 回答 1

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);
于 2012-11-30T06:34:58.923 回答