我正在进行拖放操作,当可拖动对象超过我设置到屏幕的某些限制时,我想将其恢复到原始位置。
我的问题是,如果onmousedown事件处于活动状态,则在调用onmouseup事件之前,对象不会返回其原始位置。
是否可以在运行时取消或停止mousedown?
答案 0 :(得分:1)
您可以在满足特定条件时清除mousemove事件:
function trackMouse(e) {
if (e.pageX > 200 || e.pageY > 200) {
// stop execution (event continues to run)
// alternatively, to detach this event:
$(window).off('mousemove', trackMouse);
} else {
$('#output').html(e.pageX +', '+ e.pageY);
}
}
$(window).on('mousemove', trackMouse);
答案 1 :(得分:0)
听起来你应该使用onmousemove-event来查看你是否达到了限制,但是正在使用onmousedown,,正如你所说的那样,在释放鼠标按钮之前不会触发。按下鼠标按钮时只触发一次
答案 2 :(得分:0)
也许你会发现这个jquery.event.drag插件很有用。它允许您在进行中取消拖动。来自其文档:
拖
此事件在每次鼠标“draginit”和“dragstart”之后触发 移动。处理程序可以返回false以停止拖动交互和 直接进入“dragend”并防止任何“掉落”事件。如果 拖动多个元素(来自“draginit”),此事件将触发 每个元素都是唯一的。
答案 3 :(得分:0)
@Voitek Zylinski:你的解决方案有效,但我终于找到了这个在我的情况下更好的解决方案:
$(document).trigger("mouseup");
谢谢。