javascript - dojo动态连接onclick事件到下拉列表项

标签 javascript dojo event-handling

我有一个搜索框发送 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/

相关文章:

javascript - 使用javascript和django将文本文件上传到服务器中的某个文件夹

javascript - 单击时在 td 中展开一个 div

java Swing监听器: components listening at each others

angular - 从另一个组件调用组件中的函数

javascript - 在特定列表项上划线 - jQuery

javascript - 如何将相同的选项附加到多个选择下拉框?

javascript - DOJO JsonRest - onClick 后无法更改目标 URL

php - 如果字符串包含单词 undefined 作为值,为什么 php 函数 json_decode 会失败?

mysql - 道场需要互联网吗? (struts2)

JAVASCRIPT:尝试在自定义事件调度程序上创建 hasCallbackFor 函数