jQuery UI对话框/拖动问题

使用jQuery UI对话框。

效果很好,但是目前,当我拖动一个对话框时,它不会移出屏幕(整个对话框总是在视口中)。

有没有办法设置对话框,以便我可以将其部分拖离屏幕?

如果你扩展jQuery对话框代码,你肯定可以。 只需包含以下代码:

$.ui.dialog.prototype._makeDraggable = function() { this.uiDialog.draggable({ containment: false }); }; 

它将使用false覆盖’document’的默认包含值,这将禁用包含。

或者你可以用更简单,更“jQuery方式”来做到这一点;)

 $(文件)。就绪(函数(){
     $( '#对话')。
    对话({
         //你的对话选项就在这里
     })。
    对话框(“小部件”)拖动(“选项”,“遏制”,“无”)。  //这个链式序列杀死了遏制  
 });

我有同样的问题,并将使用betamax的解决方案 ,但注意到它有效地取代了一些jQuery UI的内置function。 所以我调整了方法以保持内置function,但也通过重写_makeDraggable而不是直接替换它来关闭包容:

 if (!$.ui.dialog.prototype._makeDraggableBase) { $.ui.dialog.prototype._makeDraggableBase = $.ui.dialog.prototype._makeDraggable; $.ui.dialog.prototype._makeDraggable = function() { this._makeDraggableBase(); this.uiDialog.draggable("option", "containment", false); }; } 

玩选项,位置。 编写自己的javascript调用以移动框。

  $('#dialog').dialog('option','position',[500, 100]); 

但你不能将盒子移出视口,如果你想拥有这样的function,自己编写,扩展jquery ui对话框,(更新代码块,检查有效位置(如果位置x有效, y在视口中)