1

如果它是“vmousedown”或“vmouseup”事件,则具有一些功能。问题是,当我使用 win8 手机“vmousedown”并按下屏幕时,稍微移动手指并松开,它不会触发“vmouseup”事件。然后我的 tapTimer 没有被重置。还没有用其他手机测试过,但我不知道是操作系统阻止了它还是 jQuery Mobile。如果它是 jQM,那么它是可以修复的。我在jquery 移动事件页面上尝试了所有可能的事件。但他们不是对我的手指动作有反应的人。我的最后一个想法是用 X 和 Y 位置来处理它。但是,即使不是出于此目的,在单击页面时也感觉需要检查计时器是否开启。

    $('#element').on('vmousedown vmouseup', function(e) {
    if (e.type === 'vmousedown') {
           tapTimer = setTimeout(function () {
            isTapHold = true;
            $this.find('.ui-block-b').find('li').addClass('gggg');
        }, 1500);
    } else {
           clearTimeout(tapTimer);
    if (!isTapHold) {
                //
            } else {
                $.mobile.silentScroll(0);
            }
        }
    });
4

1 回答 1

0

在“vmousedown”之后移动手指会触发“vmousemove”事件。如果您希望“vmouseup”触发,您应该使用 preventDefault() 方法阻止 vmousemove 事件的默认操作。

你可以加:

$('#element').on('vmousemove', function(e) {
    e.preventDefault();
});
于 2014-03-27T16:38:28.983 回答