dojoeventListener通过dojo.connect连接到具有相同id的多个对象

dwthyt8l  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(144)

我尝试将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部分不是问题。

xzabzqsa

xzabzqsa1#

因此,Dojo似乎强制了一个id唯一的模式,因此,如果某个DOM元素的id与另一个元素的id匹配,最终结果是查询方法只返回第一个。
下面是我最终得到的一个例子:

dojo.query(".links a").onclick(function(evt){
                                    dojo.stopEvent(evt);
                                    var link = evt.target;
                                    onSubmit(link)
                                }
                        );

.links指定class=“links”,然后从这里开始,我通过在后面包含'a'对任何锚对象进行排序,并使用一个方便的函数处理onclick事件,获取目标并将其传递给onSubmit函数(它包含一些验证和一个xhr请求)。

wqnecbli

wqnecbli2#

试试这个:

var k=dojo.byId("linkToDisplay");
dojo.connect(k,'onclick',this,'yourfunction')

相关问题