2013-04-15 90 views
1

我有一個音量按鈕綁定到touchstart和mousedown事件,touchend和mouseup事件(我也試過touchleave和touchcancel)。Touchend和滑動手指關閉按鈕

當用戶將他們的手指握在按鈕上並擡起他們的手指時,它按預期調用末端處理程序。但是,如果用戶將他們的手指從按鈕上滑下,然後舉起他們的手指,事件就不會被觸發(這導致無限遞減或遞增音量控制的問題)。

我試着將touchend事件綁定到窗口對象,這似乎沒有做任何事情。這裏是我目前的:

$('#volume-wrap button').on('touchstart mousedown', function() { 
    if (this.id == 'volume-down') 
     volume_timer = setInterval(function(){main.hud.adjustVolume('down')}, 100); 
    else 
     volume_timer = setInterval(function(){main.hud.adjustVolume('up')}, 100); 
}); 

$(window).on('touchend mouseup', function() { 
    if (volume_timer) { 
     clearInterval(volume_timer); 
     volume_timer = 0; 
    } 
}); 

回答