jquery draggable启用和禁用

时间:2012-11-29 16:14:49

标签: jquery draggable

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

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

错误:在初始化之前无法调用draggable上的方法;试图调用方法'禁用'

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

编辑: 我发现我有一个没有可拖动类的元素(当你看错误时这是有意义的)。现在我只需找到一种方法,以便在不抛出错误的情况下禁用所有可拖动的东西:)

5 个答案:

答案 0 :(得分:27)

试试这个:

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

这会在禁用状态下初始化可拖动状态。然后你可以使用

$(".tooltip").draggable("enable");
稍后当你想允许拖动时

答案 1 :(得分:5)

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

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

这是使用

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

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

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

答案 2 :(得分:2)

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

以及此处的示例:

http://jqueryui.com/draggable/

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

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

答案 3 :(得分: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> 

答案 4 :(得分:-1)

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

抱歉,我认为它应该是$(“工具提示”)。解绑('draggable')并非100%确定事件名称。