我正在开发一个自定义的dojo-widget。在小部件中,我动态创建一些DOM节点并将函数连接到它们的事件。
我的代码与此类似:
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(在dojo-IRC上)发现在ubuntu上的Chrome中没有出现此问题。
那么如何将事件附加到该图像?
答案 0 :(得分:3)
在Dojo-IRC上通过 beuss 回答:
修改innerHTML
也会更改以前添加的DOM节点。添加文本节点而不是直接编写文本可以解决问题。
更新了小提琴:http://jsfiddle.net/YCJ6X/1/
答案 1 :(得分:0)
尝试在追加元素后附加事件。 我想这可以解决你的问题。