0

イベントとクルーザーを使用して動的に作成される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にありますが、それでもobj-objectがdomに関連付けられています。

別のオブジェクトを使用して、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 に答える