我希望有一個更優雅的解決方案來解決此問題。基本上,我有一個HTML/Javascript應用程序,將在觸摸屏上運行。我試圖阻止默認的點擊行爲,如果有人通過拖動手指滾動瀏覽按鈕列表。起初,我試圖在檢測到滑動事件時防止默認。但後來我想到,這不是一個真正的滑動事件,而是一個漫長的ousedown。所以我寫了下面的代碼:檢測mousedown事件持續多長時間,然後在一定時間內阻止mouseup動作
var downClick;
var startTime;
$(".TPGSW-wrapper").on('mousedown', function() {
downClick = new Date();
startTime = downClick.getTime();
});
$(".TPGSW-wrapper").on('mouseup', function() {
var upClick = new Date();
var endTime = upClick.getTime();
if (endTime - startTime < 250) {
return false;
} else if (endTime - startTime >= 300) {
// This is the action that I can't seem to get to work.
// I would like it to stop the click event. I also tried mouseup
this.on('click', function() { preventDefault; });
}
});
這正確測量鼠標按下的時間,但後來我似乎無法從射擊停止click事件。任何想法或建議?我只使用jQuery和這個僅用於webkit瀏覽器。提前致謝!
如果更換'和'click' mouseup'然後見好就收'event.preventDefault(也許工作)' (事件是函數的第一個參數 – JCOC611 2013-03-25 17:35:20
這不是關於用戶是否將他們的手指移動超過某個閾值距離,而不是一段時間? – 2013-03-25 17:48:09
@Jeff B,是的,這也許也有意義。我發現,因爲div與它滾動,相對於div的點沒有變化,但我猜如果我查看窗口內的座標,這可能是一個更好的解決方案。謝謝! – wewantfun 2013-03-25 19:12:17