我需要一个javascript按住并按住(长按)事件附加到dom元素。 Dojo网站上的示例(https://dojotoolkit.org/reference-guide/1.9/dojox/gesture.html#dojox-gesture)根本不起作用,我没有找到任何有效的例子。
define(["dojo/on", "dojox/gesture/tap"], function(on, tap){
var node = document.getElementById("box");
on(node, tap.hold, function(e){ alert('held') });
});
相关小提琴:http://jsfiddle.net/L8Tp6/1/
我不介意在直接的javascript中执行此操作,如果Dojo选项无效,但我想知道我是否做错了。
答案 0 :(得分:1)
问题不是手势或事件,而是您使用define()
。 define()
只应在定义模块时使用(顾名思义)。当您加载这样的文件时,它实际上不会做任何事情。它不会加载模块,也不会执行回调。回调运行的唯一方法是从require()
调用它。
您的主要Dojo文件应始终使用require()
。因此,对于您的代码:将define()
替换为require()
,它将像魅力一样工作。
代码:
require(["dojo/on", "dojox/gesture/tap"], function(on, tap){
var node = document.getElementById("box");
on(node, tap.hold, function(e){ alert('held') });
});
我还更新了您的JSFiddle。
答案 1 :(得分:0)
检测保持结束:
on(node, tap.hold, function(e){
e.target.ontouchend = function(){
console.log('You quit holding');
}
});