【发布时间】:2011-10-14 12:26:50
【问题描述】:
我正在开发一个自定义的 dojo 小部件。在小部件中,我动态创建了一些 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);
现在,正如您可能从 cmets 中猜到的那样,条件嵌套元素上的事件不会被触发。
即使我在treeItem 上注释掉了连接(顺便说一句),我也没有成功。我试过treeItemExpander.onclick = function () {...} 也无济于事。唯一有效但在小部件中没有意义的是treeItemExpander.setAttribute("onClick", "alert('test');");。
编辑:我对这个问题做了一个小调:http://jsfiddle.net/YCJ6X/
编辑:jovica(在dojo-IRC)发现问题在ubuntu上的Chrome中没有出现。
那么我如何获得附加到该图像的事件?
【问题讨论】:
-
您是否尝试过使用字符串“click”而不是“onclick”作为事件名称? edit 没关系,dojo 看起来很酷,“on” ...
标签: javascript events dojo widget