我怎样才能定位我的jQuery对话框中心?

我已经尝试了下面的代码,但它只将对话框左上angular的位置放在中心,这使得元素被alignment到正确的位置。 我怎样才能将对话框中心对象的元素宽度计算在中心线上,这样中心线就会将对话框切成50%50%的一半?

$('.selector').dialog({ position: 'center' }); 

http://docs.jquery.com/UI/Dialog#option-position

我很确定你不需要设置一个位置:

 $("#dialog").dialog(); 

应该默认居中 。

我看了看文章,也检查了jquery-ui官方网站上关于定位对话框的内容 :在初始化和初始化之后讨论了两种状态:

代码示例 – (取自jQuery UI 2009-12-03)

使用指定的位置选项初始化对话框。

 $('.selector').dialog({ position: 'top' }); 

初始化后获取或设置位置选项。

 //getter var position = $('.selector').dialog('option', 'position'); //setter $('.selector').dialog('option', 'position', 'top'); 

我认为,如果你要删除位置属性,你会发现它自己中心其他尝试第二个设置选项,你定义“选项”“位置”和“中心”的3个元素。

最新的jQuery UI有一个位置组件:

 $("#myDialog").position({ my: "center", at: "center", of: window }); 

文件: http : //jqueryui.com/demos/position/
获取: http : //jqueryui.com/download

因为对话需要一个位置,所以你需要包含js的位置

 <script src="jquery.ui.position.js"></script> 

所以,如果有人像我这样打这个网页,或者当我在15分钟内忘记,我使用的jqueryui对话框版本1.10.1和jQuery 1.9.1与if8在iframe(等等),它需要一个指定内或它不起作用,即

 position: { my: "center bottom", at: "center top", of: $("#submitbutton"), within: $(".content") } 

感谢@ vm370指向正确的方向。

 open: function () { var win = $(window); $(this).parent().css({ position: 'absolute', left: (win.width() - $(this).parent().outerWidth()) / 2, top: (win.height() - $(this).parent().outerHeight()) / 2 }); } 

为了确定中心位置,我使用:

 open : function() { var t = $(this).parent(), w = window; t.offset({ top: (w.height() / 2) - (t.height() / 2), left: (w.width() / 2) - (t.width() / 2) }); } 

尝试这个….

 $(window).resize(function() { $("#dialog").dialog("option", "position", "center"); }); 

我得到了最好的结果把jQuery对话框放在浏览器窗口的中心:

 position: { my: "center bottom", at: "center center", of: window }, 

http://api.jqueryui.com/position/上的文档中所述,可能有更准确的方法来定位选项“; using ”,但是我很匆忙……

Jquery UI 1.9.2 ,jQuery和更高版本不支持IE8

我find了两个解决scheme。

  1. 回滚到jquery UI 1.7.2来支持IE8,

  2. Jquery UI 1.9.2试试这段代码

 position: {my: "center", at: "center", of: $("body"),within: $("body") } 

根据下面的讨论,问题可能是由于在较新的jQuery版本IE兼容性较低,恢复到1.7.2似乎解决了问题,这只发生在IE8。 http://forum.jquery.com/topic/jquery-ui-dialog-positioning-not-working-in-ie-8

另一件事情可以给你地狱与JQuery对话框定位,特别是对于比浏览器视图端口大的文件 – 你必须添加声明

 <!DOCTYPE html> 

在文档的顶部。

没有它,jquery倾向于把对话框放在页面的底部,当拖动它时可能会发生错误。

以下位置参数为我工作

 position: { my: "right bottom", at: "center center", of: window }, 

祝你好运!

我必须调用函数dialog()两次来定位对话框(jQuery v1.11.2 / jQueryUI v1.10.4)。

 $("#myDialog").dialog({ /* initial dialog parameters */ }).dialog({ position: { my: "center center", at: "center center", of: window } }); 

如果您使用单独的jquery文件或自定义的jquery下载任何一种方式确保您也有jquery.ui.position.js添加到您的网页。

你只是在IE浏览器中运行? 如果是这样,请尝试将其添加到页面HEAD标记的第一行:

 <meta http-equiv="X-UA-Compatible" content="IE=7" /> 

尽pipe所有的兼容性问题都是在后来的jQueries中修复的,但是我今天遇到了这个问题。

试试这个旧版本和不想使用位置的人:

 $("#dialog-div-id").dialog({position: ['center', 'top'],.... 

如果在移动设备上使用jquery ui,还需要手动重新定位 – 对话框是通过“left&top”css属性手动定位的。 如果用户切换方向,则定位不再居中,并且之后必须调整/重新居中。

对于只在你的css文件中设置的Win7 / IE9环境:

 .ui-dialog { top: 100px; left: 350px !important; } 

我用CSS固定:

 .ui-dialog .ui-dialog-content { width: 975px!important; height: 685px!important; position: fixed; top: 5%; left: 50%; margin:0 0 0 -488px; } 

我有这个问题,我终于明白了这一点。 直到今天,我正在使用一个真正的老版本的jQuery,版本1.8.2。

在我使用过的dialog地方,我都用下面的位置选项初始化了它:

 $.dialog({ position: "center" }); 

然而,我发现删除position: "center"或用正确的语法replace它并没有办法,例如:

 $.dialog({ position: { my: "center", at: "center", of: window } }); 

虽然上面的说法是正确的,但是我也是用这个option来设置页面的位置,

 // The wrong old way of keeping a dialog centered passwordDialogInstance.dialog("option", "position", "center"); 

这导致我所有的对话窗口都粘在视图端口的左上angular。

我不得不用下面的正确的新语法来replace这个的所有实例:

 passwordDialogInstance.dialog( "option", "position", { my: "center", at: "center", of: window } ); 

无法让IE9将对话框居中。

修正它通过添加到CSS:

 .ui-dialog { left:1%; right:1%; } 

百分比并不重要。 任何less数人工作。