Touchend和滑动手指关闭按钮

时间:2013-04-15 00:23:26

标签: touch multi-touch android-browser

我有一个音量按钮绑定到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;
    }
});

1 个答案:

答案 0 :(得分:0)

尝试将e.preventDefault()添加到touchstart事件中。 Android浏览器中存在一个错误。

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

更新: 有关更好的说明,请参阅SystemParadox答案:https://stackoverflow.com/a/11613327/757086