我如何使用Dojo tap.hold手势

时间:2014-01-10 01:28:34

标签: javascript mobile javascript-events dojo

我需要一个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选项无效,但我想知道我是否做错了。

2 个答案:

答案 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');
    }
});