所以我试图将一个onclick事件附加到一组具有相同id的链接(“linkToDisplay”),它似乎没有触发我的onclick事件代码如下:
var handle = [];
var link = dojo.query('#linkToDisplay a').forEach(function(node, index, array){
handle.push(dojo.connect(node,
"onclick",
null,
function(evt) {
console.log("mouseup detected, firring off server request");
dojo.xhrGet({url:'default/data/getPageContent?main=true&pageId='+evt.target.name,
load: funcCallBack,
error: funcError});
}
));
});
funcError和funcCallBack已定义并正常工作(如果我只传入dojo.getId检索到的单个对象,否则我的脚本会无声地失败)。
我将此代码放在dojo.addOnLoad代码块中,当我点击页面上的任何位置时,我没有看到任何事件被触发,所以我很确定将事件监听器附加到错误的DOM。
答案 0 :(得分:1)
所以似乎dojo强制执行id是唯一的模式,因此如果某个DOM元素的id与另一个匹配,则最终结果是查询方法只返回第一个。
这是我最终得到的样本:
dojo.query(".links a").onclick(function(evt){
dojo.stopEvent(evt);
var link = evt.target;
onSubmit(link)
}
);
.links指定class =“links”,然后从那里我通过包含'a'之后对任何锚对象进行排序,并为onclick事件使用便利函数,抓取目标并将其传递给onSubmit function(包含一些验证和xhr请求。)。
答案 1 :(得分:1)
试试这个:
var k=dojo.byId("linkToDisplay");
dojo.connect(k,'onclick',this,'yourfunction')