【发布时间】:2012-09-17 12:17:25
【问题描述】:
为了在移动设备上实现“长按”,我从一个简单的事件映射开始,其中touchstart 设置一个时间,touchend 设置另一个,然后计算差异以了解如何长元素被按下。这是我的旧代码:
$('html')
.on({
touchstart : function(e){
g.tt.start = new Date();
},
touchend : function(e){
g.tt.end = new Date();
g.tt.delta = g.tt.end - g.tt.start;
alert(g.tt.delta);
g.tt = {};
}
})
;
但不幸的是……
...每隔一次按下都会计算从前一个触摸结束到触摸开始的差异。我很确定我缺少一些基本的东西,因此最终过度设计了这个(我害怕没有正式的培训)。这是我的新代码:
$('html')
.on({
touchstart : function(e){
g.tt = {};
g.tt.start = new Date();
},
touchend : function(e){
g.tt.end = new Date();
g.tt.delta = g.tt.end - g.tt.start;
if( isNaN(g.tt.delta) == false ) {
alert(g.tt.delta);
}
else {
return false;
}
setTimeout(function(){g.tt = {}; });
}
})
;
难道不应该有一个更简单的方法来使用更少的子句吗?别介意我有趣的g.tt 变量名。
【问题讨论】:
-
出于好奇,您不喜欢处理这类事情的jqTouch 吗?
-
它做了非常具体的事情。我认为它很棒,但它不符合我的需求。
标签: events jquery-mobile mobile-safari jquery