我有一个搜索框发送 ajax 请求以从 JSON responseText 创建项目的下拉列表。 我想将每个项目链接到一个“onclick”事件。但是,使用下面的代码,一旦我的下拉列表出现,我的所有事件都会同时发生(甚至不是点击)。
function getDropDownList(jso){
if (jso.errorCode == 0){
var result = document.createElement("div");
result.className = "resultList";
for (var i = 0 ; i < jso.resultats.length && i < 7; i++){
var item = document.createElement("div");
item.className = "item";
item.innerHTML = jso.results[i].name + ' (' + jso.results[i].localities + ')';
result.appendChild(item);
dojo.connect(item, 'onclick', myEventHandler);
}
myToolBar.appendChild(result);
}
}
有人可以帮我弄清楚这个方案有什么问题吗?
最佳答案
我推荐使用 dojo/on 和 AMD load。
//this is a way
require(["dojo/query","dojo/domReady!"], function(query){
//Use "dojo/request" if you need Send a request.
var result = dojo.create("div", {class:"resultList"}, null);
//for()...... or import "dojo/_base/array" and make forEach
query(dojo.create('div',
{ innerHTML: jso.results[i].name + ' (' + jso.results[i].localities + ')',
class:"item"//other parameters here!.
}, null))
.onclick(function(e){ console.log('clicked', e.target); })//or call myEventHandler
.place(result);
//End for
query(result).place('#myToolBar');//add result to Dom element with id myToolBar
});
可以找到有关 Dojo 事件的更多信息 here .
问候
关于javascript - dojo动态连接onclick事件到下拉列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501294/