在javascript / jquery中取消事件mousedown

时间:2013-01-02 15:05:05

标签: javascript jquery mousedown

我正在进行拖放操作,当可拖动对象超过我设置到屏幕的某些限制时,我想将其恢复到原始位置。

我的问题是,如果onmousedown事件处于活动状态,则在调用onmouseup事件之前,对象不会返回其原始位置。

是否可以在运行时取消或停止mousedown?

4 个答案:

答案 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);​

Demo (JSLint)

答案 1 :(得分:0)

听起来你应该使用onmousemove-event来查看你是否达到了限制,但是正在使用onmousedown,,正如你所说的那样,在释放鼠标按钮之前不会触发。按下鼠标按钮时只触发一次

答案 2 :(得分:0)

也许你会发现这个jquery.event.drag插件很有用。它允许您在进行中取消拖动。来自其文档:

  

     

此事件在每次鼠标“draginit”和“dragstart”之后触发   移动。处理程序可以返回false以停止拖动交互和   直接进入“dragend”并防止任何“掉落”事件。如果   拖动多个元素(来自“draginit”),此事件将触发   每个元素都是唯一的。

答案 3 :(得分:0)

@Voitek Zylinski:你的解决方案有效,但我终于找到了这个在我的情况下更好的解决方案:

$(document).trigger("mouseup");

谢谢。