touchstart イベントと mousedown イベント、および touchend イベントと mouseup イベントにバインドするボリューム ボタンがあります (touchleave と touchcancel も試しました)。
ユーザーがボタンに指を置いたまま指を離すと、期待どおりに終了ハンドラーが呼び出されます。ただし、ユーザーがボタンから指をスライドさせて離した場合、イベントは発生しません (これにより、ボリューム コントロールが無限に減少または増加するという問題が発生します)。
touchend イベントを window オブジェクトにバインドしようとしましたが、何もしないようです。現時点で私が持っているものは次のとおりです。
$('#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;
}
});