簡體   English   中英

在javascript / jquery中取消事件mousedown

[英]cancel event mousedown in javascript / jquery

我正在執行拖放操作,當可拖動對象超過我已設置到屏幕的某些限制時,我想將其返回到其原始位置。

我的問題是,如果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);​

演示(JSLint)

聽起來您應該使用onmousemove-event來查看您是否已達到限制,但正在使用onmousedown, 正如您所說的,在釋放鼠標按鈕之前不會觸發。 按下鼠標按鈕時僅觸發一次

也許您會發現此jquery.event.drag插件有用。 它允許您取消正在進行的拖動。 從其文檔:

拖動

每次鼠標移動時,都會在“ draginit”和“ dragstart”之后觸發此事件。 處理程序可以返回false來停止拖動交互,並直接進入“拖動”狀態,還可以防止任何“放置”事件。 如果拖動多個元素(從“ draginit”拖動),則此事件將在每個元素上唯一觸發。

@Voitek Zylinski:您的解決方案有效,但我最終發現此解決方案對我而言更好:

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

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM