【问题标题】:jQuery's draggable() function isn't workingjQuery 的 draggable() 函数不起作用
【发布时间】:2014-09-03 15:59:06
【问题描述】:

这是我的 JSFiddle:http://jsfiddle.net/o5tupLcb/

我的问题是,为什么 div 没有拖动?即使我制作 $(".drag").draggable();在 switch 语句之外有自己的语句,它不起作用。

这里有一些 jQuery:

$(document).ready(function() {
    $(".drag").mousedown(function(e) {
        switch (e.which) {
        case 1:
            $(this).toggleClass("mousedown");
            $(this).draggable(); /* This probably shouldn't be here */
        case 2:
            break;
        case 3:
            break;
        default:
            break;
        }
    });

    $(".drag").mouseup(function(e) {
        switch (e.which) {
        case 1:
            $(this).toggleClass("mousedown");
            $(this).draggable(); /* This probably shouldn't be here */
        case 2:
            break;
        case 3:
            break;
        default:
            break;
        }
    });
});

请注意,我已经尝试导入 jQuery UI,但没有任何反应。

编辑:原来我导入了错误的东西。此外,当我将 draggable() 函数从 switch 语句中取出并放在下面时,它的效果会更好。

【问题讨论】:

  • 未捕获的类型错误:未定义不是函数。你没有包含 jQuery UI,更不用说 jQuery
  • 我尝试在 HTML 头中导入它,但它仍然没有字。
  • 你可能是对的。您正在尝试重新发明可拖动性并使用 jQuery UI。只需使用$("selector").draggable() 使其可拖动 - 无需绑定事件并使用您的逻辑
  • 您不能包含 jQuery UI。您必须包含 jQuery 然后 jQuery UI。
  • 我这样做是因为我只是从 Notepad++ 复制粘贴它。

标签: jquery html css draggable


【解决方案1】:

清理了您在 jsfiddle 上的代码,包括 jQuery 和 jQuery UI。还将html更改为:

<div class="drag">Hello</div>

现在可以工作了(第一次点击后)。这是有道理的,因为该事件在您第一次单击后触发(并在您释放后再次触发)。

http://jsfiddle.net/o5tupLcb/1/

【讨论】:

  • 哇,谢谢!现在我只需要编辑 toggleClass 的东西,因为 mousedown CSS 类以不合需要的方式交替。
  • 是的,你几乎在那里。就是您在 jsfiddle 中显示它的方式。仅将内容放入正文标签内,而不是正文标签本身。检查 jQuery UI 的外部资源和 jQuery 顶部的框架。
  • 另外,既然您知道哪个是单击(鼠标按下)哪个是释放(鼠标向上),请考虑使用 addClass 和 removeClass。更具体,可以帮助解决“滞后”可能引起的问题。
  • 如果解决了,请标记正确答案(点击左上角的勾)。
猜你喜欢
  • 2018-06-01
  • 2022-01-11
  • 2017-09-16
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多