0

似乎我无法使用 dojo 在动态创建的元素上捕获单击事件。

这就是我创建链接列表的方式:

for(var i=0; i<items.length; i++){
     console.log( items[i].getAttribute("jid") )                    
     dojo.place("<li><a href='#' id='temp'>" + items[i].getAttribute("firstname") + "</a></li>", "log");
}

on( '#temp' ).on( 'click', function( evt ) {
    console.log( "click" );
});

不幸的是,该活动没有注册。

4

1 回答 1

1

这是dojo/on文档;您需要传递一个元素、一个事件类型和一个处理程序。看起来您将需要第一次dojo/query尝试使用的位置;文档在这里on

看起来您想为每个动态创建的元素设置一个点击处理程序。因此,query对于这些元素并在每个元素上设置一个点击处理程序。

我将您更改id为 a 是class因为多个元素具有相同的 id 不是一个好主意,但概念是相同的。而不是你on上面的链,这样的东西会起作用:

query('.temp').forEach(function(t) {
    on(t, 'click', function(evt) {
        console.log('click', evt);
    });
});

这是一些虚拟物品的工作小提琴;大概您的物品略有不同。

于 2013-11-11T23:42:10.797 回答