【问题标题】:Remove touchpointer in javascript删除javascript中的触摸指针
【发布时间】:2018-08-17 11:44:38
【问题描述】:

我试图制作一个带有 html 元素的 webapp,当点击时将表单 div 移动到另一个 div 但我希望能够在用户持有它时触发事件元素超过一秒钟。所以我有这个代码

$(document).on("click",'.card', function() {
    var card=$(this).parent();
    if(card.parent().attr('id')==="options"){
          card.appendTo("#choice");
    }
    else{
        card.appendTo("#options");
    }
});
var timeoutId = 0;
$('.card').on('pointerdown', function() {
    timeoutId = setTimeout(showModal, 1000);
}).on('pointerup mouseleave', function() {
    clearTimeout(timeoutId);    
});

而且它做得几乎很好。单击元素时会出现问题。它按照应有的方式附加到不同的 div,但移动指针仍在其上,因此当我尝试在另一个元素上触发 'hold' 事件时,它第一次不起作用,因为来自前一个元素的 'pointerup' 事件在之后触发'pointerdown' 事件(因此您需要尝试两次按住下一个元素)。

我已经通过在单击事件函数中添加一个简单的布尔标志来处理它,因此它会阻止下一次首次调用“pointerup”事件,但这是一个非常丑陋的解决方案。 您有什么想法可以改善吗?也许有一种方法可以在点击后手动调用“pointerup”事件?

【问题讨论】:

    标签: javascript jquery html events


    【解决方案1】:

    移除 'mouseleave' 事件并添加 'pointerleave' 来解决问题。 不太确定“mouseleave”事件是如何在移动设备上触发的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      相关资源
      最近更新 更多