如何禁用jquery-ui draggable?

Ern*_*ngs 95 jquery-ui

如何禁用jQuery draggable,例如在UpdatePanel回发期间?

mad*_*lor 146

可以创建DisableDrag(myObject)和EnableDrag(myObject)函数

myObject.draggable( 'disable' )
Run Code Online (Sandbox Code Playgroud)

然后

myObject.draggable( 'enable' )
Run Code Online (Sandbox Code Playgroud)

  • 也就是说[draggable()docs(现在?)这里](http://api.jqueryui.com/draggable/),上面有nickb的链接,去[演示](http:// jqueryui.com/draggable/).;) (3认同)
  • 这有效.draggable()的完整文档是[这里](http://jqueryui.com/demos/draggable/#options).对于sortable()对象也是如此(如果您允许拖放重新排序.) (2认同)

Phi*_*ilB 68

要暂时禁用可拖动行为,请使用:

$('#item-id').draggable( "disable" )
Run Code Online (Sandbox Code Playgroud)

要永久删除可拖动行为,请使用:

$('#item-id').draggable( "destroy" )
Run Code Online (Sandbox Code Playgroud)

  • 我发现'禁用'有css相关的副作用,但是破坏工作完美无瑕. (6认同)
  • 也许你可以指出副作用. (2认同)

Car*_*lar 19

要在jQuery中启用/禁用draggable,我使用了:

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

$("#draggable").draggable({ disabled: false });
Run Code Online (Sandbox Code Playgroud)

@Calciphus的答案对我来说不适用于不透明度问题,所以我使用了:

div.ui-state-disabled.ui-draggable-disabled {opacity: 1;}
Run Code Online (Sandbox Code Playgroud)

也适用于移动设备.

这是代码:http://jsfiddle.net/nn5aL/1/

  • 在给出的所有解决方案中,这一个是唯一一个100%为我工作的 - 所有其他(使用禁用/破坏等组合)只是没有解决css问题.在我使用拖放操作的应用程序中,我发现自初始化后拖动的元素与未触及的元素相比,不透明度不同.一切都非常凌乱.感谢@CarinaPilar的解决方案和jsfiddle来证明它. (2认同)

Oli*_*lme 11

我花了一些时间来弄清楚如何在drop-use上禁用draggable ui.draggable来引用从drop函数中拖动的对象:

$("#drop-target").droppable({
    drop: function(event, ui) {
        ui.draggable.draggable("disable", 1); // *not* ui.draggable("disable", 1);
        …
    }
});
Run Code Online (Sandbox Code Playgroud)

HTH有人


mak*_*ni4 9

似乎没有人看过原始文档.可能是那时没有它))

使用指定的disabled选项初始化一个draggable.

$( ".selector" ).draggable({ disabled: true });
Run Code Online (Sandbox Code Playgroud)

初始化后,获取或设置禁用选项.

//getter
var disabled = $( ".selector" ).draggable( "option", "disabled" );
//setter
$( ".selector" ).draggable( "option", "disabled", true );
Run Code Online (Sandbox Code Playgroud)


And*_*i C 7

在对话框的情况下,它有一个名为draggable的属性,将其设置为false.

$("#yourDialog").dialog({
    draggable: false
});
Run Code Online (Sandbox Code Playgroud)

虽然这个问题已经过时了,但我尝试了所提出的解决方案并且它不适用于对话框.希望这可以帮助像我这样的人.