我正在进行拖放,当可拖动对象通过我为屏幕设置的某些限制时,我想将其返回到其原始位置。
我的问题是,如果 onmousedown 事件处于活动状态,则对象在调用 onmouseup 事件之前不会返回其原始位置。
是否可以在运行时取消或停止 mousedown?
我正在进行拖放,当可拖动对象通过我为屏幕设置的某些限制时,我想将其返回到其原始位置。
我的问题是,如果 onmousedown 事件处于活动状态,则对象在调用 onmouseup 事件之前不会返回其原始位置。
是否可以在运行时取消或停止 mousedown?
当满足特定条件时,您可以清除 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);
听起来您应该使用 onmousemove-event 来查看是否已达到限制,但正在使用 onmousedown,正如您所说,在您释放鼠标按钮之前不会触发。按下鼠标按钮时仅触发一次
也许您会发现这个jquery.event.drag插件很有用。它允许您在拖动过程中取消拖动。从它的文档:
拖
每次鼠标移动时,此事件都会在“draginit”和“dragstart”之后触发。处理程序可以返回 false 以停止拖动交互并直接进入“dragend”并防止任何“drop”事件。如果拖动多个元素(来自“draginit”),此事件将在每个元素上唯一触发。
@Voitek Zylinski:您的解决方案有效,但我终于发现这个解决方案在我的情况下更好:
$(document).trigger("mouseup");
谢谢你。