2012-11-30 57 views
0

我有一些動態創建的事件和clousure DOM元素。事件委託與每個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對象。

我想我可以使用另一個對象,並用它作爲「散列」表,用dom元素和obj,然後在「散列」表上使用e.target,但是沒有更好的解?

回答

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); 
+0

歐凱,它看起來像一樣,我想出了,但是,而不是增加我已經做了類似{domElement1的.instance:obj01],domElement2: obj [1]}所以我不更新對象[]中的對象。謝謝。 – TryingToImprove