捕捉iPad上
问题描述:
我试图捕捉时间的触摸的触摸持续时间开始和结束之间经过,并不能似乎得到一致的行为,不管我怎么努力。捕捉iPad上
我已经尝试了一些不同的解决方案,但行为始终是零星的。这是我目前正在尝试的一个例子(下面)。
我必须提醒到位多空触摸,但似乎只是在结果没有一致性。
我确实看到了类似的问题已经在这里问过“得到最久期,一个触摸式的JavaScript的”,但该解决方案产生相同的不确定的结果。
任何建议将非常感激。
$(document).ready(function() {
var $IndividualItem = $(".wrapperWithHover li a");
var touchStartTime;
var touchStartLocation;
var touchEndTime;
var touchEndLocation;
$IndividualItem.bind('touchstart', startOfTouch);
$IndividualItem.bind('touchend', endOfTouch);
$IndividualItem.bind('touchmove', endOfTouch);
function startOfTouch(e) {
e.preventDefault();
var d = new Date();
touchStartTime = d.getTime();
}
function endOfTouch(e) {
e.preventDefault();
var d = new Date();
touchEndTime= d.getTime();
doTouchLogic();
}
function doTouchLogic() {
var duration = touchEndTime - touchStartTime;
if (duration <= 1500) {
alert('1');
}
if (duration > 1500) {
alert('2');
}
duration = null;
}
$('.wrapperWithHover li a').each(function() {
var timeout,
longtouch;
$(this).bind('touchstart', function() {
timeout = setTimeout(function() {
longtouch = true;
}, 1000);
}).bind('touchend', function() {
if (longtouch) {
// It was a long touch.
}
longtouch = false;
clearTimeout(timeout);
});
});
});
这里是HTML的一个小剪断我使用测试。(不得不删除一个的HREFs如计算器从他们提交的问题有阻止我。)
- 测试
- 测试
- 测试
答
您不必捕获touchmove
事件。正因为如此endOfTouch
方法被称为上touchmove
事件之前甚至touchend
发生。
从您的代码中删除此行并尝试。它应该给你适当的结果。
$IndividualItem.bind('touchmove', endOfTouch);
感谢您的快速回答,但实际上在我开始体验这个问题后,我实际上已经将这件事告诉了他们。没有它也存在问题。 – Joe 2012-02-12 04:29:50