【问题标题】:How do I stop mousemove?如何停止鼠标移动?
【发布时间】:2016-03-31 17:25:19
【问题描述】:

我创建了一个 JS 函数来左右拖动项目。单击按钮后,我需要停止拖动。如何停止鼠标移动?

我尝试过$('.draggable').off('mousemove');e.stopPropagation();,但都没有为我工作。

一个 JSFiddle 值一千字,请在此处查看问题:https://jsfiddle.net/kthornbloom/k2k928j1/

【问题讨论】:

    标签: javascript jquery draggable drag


    【解决方案1】:

    只需删除“可拖动”类。

    $('.draggable').removeClass('draggable');

    https://jsfiddle.net/a1vvmszq/

    【讨论】:

    • +1 因为你是完全正确的。我接受了另一个答案,因为它回答了我的具体问题。
    【解决方案2】:

    你的问题是你在做

    $('.draggable').parents().on('mousemove', function(e) { ... });
    

    $('.draggable').off('mousemove');
    

    off 调用与on 调用不在同一个元素上。改成

    $('.draggable').parents().off('mousemove');
    

    它有效。

    ...尽管您确实应该存储处理程序并明确删除它。

    【讨论】:

      【解决方案3】:

      在你的 jsfiddle 中试试这个:

      $('#stop').on('click',function(){
        //$('.draggable').off('mousemove');
        $('.thing').off(); // Removes all event handlers.
      });
      

      【讨论】:

      • 它似乎并没有阻止盒子移动。
      • 在尝试移动框之前,您是否编辑了代码并单击了停止链接?当我编辑您的代码时,它对我有用。
      • 我不知道为什么 jQuery 不允许这段代码运行:$('.draggable').off('mousemove'); 也不是这段代码 $('.thing').off('mousemove');,因为他们的 API 文档表明这样做是完全合法的。 (请参阅此处的附加说明:api.jquery.com/mousemove)这可能是他们库中的错误。
      【解决方案4】:

      除了mouseup,使用mouseleave 事件。 https://jsfiddle.net/k2k928j1/2/

      【讨论】:

      • 嗨,奥斯卡,抱歉,这很难描述。我希望盒子在 mouseleave 事件期间继续移动。我只希望它在单击按钮后停止。
      • 啊,我明白了。也许您想要以下内容:jsfiddle.net/k2k928j1/3
      猜你喜欢
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多