我有一个链接,它有 mousedown 和 mouseup 处理程序来为页面上的一些对象设置动画。 拖动(拖放)链接时会触发 mousedown 事件,但在释放时不会触发 mouseup 事件。这个问题有解决方法吗?
这里有一个例子,如果你点击链接正常,但是当你拖动链接鼠标向上时不会发生:
最佳答案
处理拖拽
这里没有人提到的关键是,实际上是一个事件来注册拖动的结束,正如其他答案所解释的那样,这就是这里发生的事情。该事件称为 dragend
,因此您可以简单地执行
$("a").on("dragend",function(){
console.log("Drag End");
});
注册拖动的结束。这样做的缺点是您仍然会看到拖动界面(换句话说:浏览器将显示一些 UI 以通知用户他正在拖动)。
注册鼠标松开
2020 年的注意事项:这不是一个好的答案,但我对 jQuery 不再熟悉,因此无法很好地更新它。我猜 dragstart
上的 event.preventDefault()
可能相关也可能不相关。
但是也有一种方法可以注册鼠标抬起,只需在 click
中通过 return
ing false
取消拖动行为事件监听器,然后在 document
上注册 mouseup
。
$("a").mousedown(function(){
console.log("Mouse Down");
return false;
});
$(document).mouseup(function(){
console.log("Mouse Up");
});
我觉得我必须做的唯一评论是,在独立的 jsfiddle 中,它工作得很好,在我自己的代码中它没有,所以我正在听 mouseup
和dragend
只是为了确定。
关于javascript - 拖动时的 mouseUp 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6019190/