【发布时间】: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