来自'byId'的Dojo'on'事件会触发TypeError

时间:2016-04-05 23:37:33

标签: javascript events dojo event-handling

我有一个模块,其中包含一个生成内容的switch语句,以及各种on个事件,这些事件依赖于插入到DOM中的内容,然后激活哪个触发器。

我发现使用on的{​​{1}}事件处理程序:

dom.byId('foo')

产生错误:

on(dom.byId('foo'), touch.press, function(e){

我可以理解这一点 - 如果节点Uncaught TypeError: cannot read property 'on' of null尚不存在,因为已经满足了不同的切换条件,但我已经设法通过使用css类代替它:

foo

但是这与on(query('.foo'), touch.press, function(e){具有相同的存在机会!

我对Dojo来说相对较新,并且乐于“掌握”它,并且我很想知道为什么会这样,但是如果它是一个大红旗我做错了什么!

1 个答案:

答案 0 :(得分:1)

没有完整的代码很难说,但如果你想使用查询,你需要使用这种方式:

require(["dojo/query"], function(query){
  query(".foo").on("click", clickHandler);
});

我不知道你的项目的上下文,但如果它是移动你可能会看到“dojo / gesture / tap”,就像在doc中的这个例子:

define(["dojo/on", "dojo/gesture/tap", function(listen, tap){
on(button, tap, tapHandler);
...