1

我有一个音量按钮,绑定到 touchstart 和 mousedown 事件,以及 touchend 和 mouseup 事件(我也尝试过 touchleave 和 touchcancel)。

当用户将手指放在按钮上并抬起手指时,它会按预期调用结束处理程序。但是,如果用户将手指从按钮上滑开然后抬起手指,则该事件永远不会被触发(这会导致音量控制无限减小或增大的问题)。

我已经尝试将 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;
    }
});
4

1 回答 1

0

尝试将 e.preventDefault() 添加到 touchstart 事件。安卓浏览器有bug。

请参阅:http ://code.google.com/p/android/issues/detail?id=4549

更新:有关更好的解释,请参见 SystemParadox 答案:https ://stackoverflow.com/a/11613327/757086

于 2013-11-14T14:21:32.907 回答