我有一个模块,它包含一个生成内容的switch语句,以及各种等待的on
事件,这些事件取决于将什么内容插入DOM,然后激活哪个触发器。
我发现使用dom.byId('foo')
:的on
事件处理程序
on(dom.byId('foo'), touch.press, function(e){
产生错误:
Uncaught TypeError: cannot read property 'on' of null
。
我可以理解这一点——如果节点foo
还不存在,因为已经满足了不同的切换条件,但我已经通过使用css类来绕过它:
on(query('.foo'), touch.press, function(e){
但这与id
有着同样的存在机会!
我对Dojo还比较陌生,掌握它很"有趣",我很想知道为什么会发生这种情况,但如果这是一个很大的危险信号,那就是我做错了什么!
没有完整的代码很难说,但如果你想使用查询,你需要使用这种方式:
require(["dojo/query"], function(query){
query(".foo").on("click", clickHandler);
});
我不知道你的项目的上下文,但如果是移动项目,你可能会看到"dojo/手势/点击",比如文档中的这个例子:
define(["dojo/on", "dojo/gesture/tap", function(listen, tap){
on(button, tap, tapHandler);
...