14

我已经尝试过任何事情来做到这一点,但总是得到同样的错误

$(".tooltip").draggable('disable');

错误:在初始化之前无法调用可拖动的方法;试图调用方法“禁用”

初始化之前?所以我不能在它实际被拖动之前删除该选项?我也尝试过 droppable,似乎无法在不出现此错误的情况下启用它们。

编辑:我发现我有一个带有不可拖动类的元素(当您查看错误时这是有道理的)。现在我只需要找到一种方法,这样它就可以禁用所有可拖动而不抛出错误:)

4

5 回答 5

33

试试这个:

$(".tooltip").draggable({ disabled: true });

这会将可拖动对象初始化为禁用状态。然后你可以使用

$(".tooltip").draggable("enable");

稍后当您想要允许拖动时。

于 2012-11-29T16:22:36.813 回答
5

我能够在这个 jsfiddle 中重新创建您的场景:

http://jsfiddle.net/dboots/NDZKY/

这是使用

$('.draggable').draggable('disable');

$('.draggable').draggable('enable');

有什么不同的东西你不能做同样的事情吗?看起来你有相同的语法。

于 2012-11-29T16:34:31.420 回答
2

看看文档http://api.jqueryui.com/draggable/

和这里的一个例子:

http://jqueryui.com/draggable/

您是否“包含”了 jquery-ui.js 库?

试试这个小提琴!http://jsfiddle.net/3Lrg2/23/

于 2012-11-29T16:17:57.383 回答
0

启用禁用_

$("#container").draggable({disabled:false});
$("#container").draggable({disabled:true});

下面给出的简单示例:

<div id = "container"></div>
<button id = "control"></button>
<script>
  $(document).ready(function()
    {
       $("#control").click(function()
          {
            if($("#control").hasClass("active")
              {
                $("container").draggable({disabled:true});
                $("control").removeAttr("class","active");   
              }
            else
              {
                $("container").draggable({disabled:false});
                $("control").attr("class","active");
              }
          });
    });
</script> 
于 2016-10-26T23:53:39.643 回答
-1

尝试使用 .unbind('ondrag') 从元素中删除事件。

抱歉,我认为它应该是 $("tooltip").unbind('draggable') 不是 100% 确定事件名称。

于 2012-11-29T16:19:46.307 回答