我似乎无法正确地将onchange事件附加到dijit.form.Select小部件.但是,我是网络开发的新手,所以我可能会做一些完全愚蠢的事情(虽然,我能说得最好(而且我已经读过我能找到的所有文档)我不是).我确保body类匹配dojo主题,我为所有使用的小部件(和dojo.parser)dojo.require(),仍然是,nada.我正在使用的代码是:
dojo.addOnLoad(function () { var _query = dojo.query('.toggle'); for (var i in _query) { dojo.connect(_query[i], 'onchange', function (ev) { console.log(ev + ' fired onchange'); }); } });
任何帮助都将不胜感激.
另外:在深入研究dijit如何呈现小部件的内部之后,我发现当我将dojoType ='dijit.form.Select'属性 - 值对添加到我的html元素(以声明方式执行此操作)时,dijit实际上呈现了一个 - 行二列表.表的第一个元素是一个span(带有类dijitSelectLabel),我假设它只显示所选(或默认)元素.它的第二个元素似乎是一个呈现为向下箭头的按钮,用于切换菜单主题的显示以响应某些DOM事件.另外(我认为这非常漂亮),dijit实际上并没有将选择选项放在DOM树中,直到触发其中一个事件.在一个新的页面加载(在我点击任何东西之前)之后我立即查看了firebug中的HTML,并且第二个选项无法找到.然后,一旦我点击箭头按钮,就会有一个dijit.Menu小部件,dijit会将dijit.Menu粘贴到body节点的末尾; 在我点击其他地方之后,Menu小部件仍然是正文的lastChild,现在它只是隐藏而没有附加到form.Select小部件.
如果我想要做的就是在DOM树中放置一个不同的dijit.form小部件,具体取决于用户选择的项目,它真的会这么复杂吗?
结论:原来这是一个大写问题.
dojo.connect(widget_obj, 'onChange', function_obj);工作,而
dojo.connect(widget_obj, 'onchange', function_obj);没有.