2011-10-14 79 views
2

我正在開發一個自定義的dojo-widget。在小部件中,我動態地創建了一些DOM節點並將函數連接到它們的事件。爲什麼連接的onclick事件不會觸發?

我的代碼看起來與此類似:

var treeItem = document.createElement("div"); 

if (current.children) // 'current' is set up like: { id: <int>, name: <string>[, children: <id-array>] } 
{ 
    var treeItemExpander = document.createElement("img"); 
    [...] // stuff like setting classes and setting the path, nothing special 
    dojo.connect(treeItemExpander, "onclick", function() { alert("test expander"); }); // problem line 
    treeItem.appendChild(treeItemExpander); 
} 

treeItem.innerHTML += current.name; 
dojo.connect(treeItem, "onclick", function() { alert("test item"); }); 

this.tree.appendChild(treeItem); 

現在,你也許可以從評論猜測,有條件的嵌套元素上的事件不會被觸發。

即使當我註釋掉treeItem(順便說一下)的連接時,我也沒有成功。我試過treeItemExpander.onclick = function() {...}也無濟於事。唯一有效的,但在小部件中沒有意義的是treeItemExpander.setAttribute("onClick", "alert('test');");

編輯:我做了這個問題一個小提琴:http://jsfiddle.net/YCJ6X/

編輯:jovica(在道場-IRC)發現,在Chrome瀏覽器不會出現在Ubuntu的問題。

那麼如何獲得附加到該圖像的事件?

+0

您是否嘗試過使用字符串「點擊」,而不是「onclick」事件的事件名稱? *編輯*沒關係,道場似乎與「上」很酷...... – Pointy

回答

3

回答beuss上道場-IRC:

修改innerHTML改變先前所附DOM節點也是如此。追加文本節點而不是直接寫文本可以解決問題。

更新小提琴:http://jsfiddle.net/YCJ6X/1/

0

嘗試在追加元素後附加事件。 我認爲這將解決您的問題。

+0

沒有,沒有任何區別。 –

相關問題