2011-10-14 14 views
2

私はカスタムdojo-widgetに取り組んでいます。ウィジェット内では、いくつかのDOM-Nodeを動的に作成し、そのイベントに関数を接続しています。なぜ接続された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');");です。

編集:jovica(道場-IRCでの)問題は、Ubuntuの上でChromeで発生していないことが判明:http://jsfiddle.net/YCJ6X/

編集:私が問題とフィドルを作りました。

どうすればその画像にイベントを添付できますか?

+0

あなたは、文字列の代わりに「onclickの」イベント名のための「クリック」を使用してみましたか? *編集*決して気にせず、道場は "上"で涼しいようです... – Pointy

答えて

3

道場、IRC上 beuss で答える:

変更innerHTML変化が以前にDOMが同様ノード添付。テキストを直接書くのではなく、テキストノードを追加すると、問題が直接解決されます。

はフィドル更新:http://jsfiddle.net/YCJ6X/1/

0

要素を追加した後にイベントをアタッチしてみます。 私はあなたの問題を解決するだろうと思う。

+0

いいえ、全く違いはありません。 –

関連する問題