Javascript 如何使用jQuery UI设置对话框位置?

Javascript 如何使用jQuery UI设置对话框位置?,javascript,jquery-ui,Javascript,Jquery Ui,是的,我知道也有类似的问题——他们没有回答。我还知道jQuery是一个相当古老的框架——但这不是重点 我正在编写一个应用程序,其中使用jQueryUI对话框作为工具窗口。当它们关闭时,应用程序将它们的当前位置保存在cookie中。这样,当您打开应用程序时,窗口将恢复到以前的位置 然而,我不能改变这种立场 我正在尝试使用位置功能进行此操作,如下所示: 在创建对话框之前,我从cookies中获取有关存储位置的信息 // I get only "pointer" to it dlg=$('#dlg-T

是的,我知道也有类似的问题——他们没有回答。我还知道jQuery是一个相当古老的框架——但这不是重点

我正在编写一个应用程序,其中使用jQueryUI对话框作为工具窗口。当它们关闭时,应用程序将它们的当前位置保存在cookie中。这样,当您打开应用程序时,窗口将恢复到以前的位置

然而,我不能改变这种立场

我正在尝试使用
位置
功能进行此操作,如下所示:

在创建对话框之前,我从cookies中获取有关存储位置的信息

// I get only "pointer" to it
dlg=$('#dlg-Tiles');

// The first parameter is the window ID in the settings, the second is 
// the default parameters for the window position, if there was no 
// entry in the configuration
let windowCfg=getWindowConfig(dlg,{
            position:{my:"left top", at:"left+100 top+50", of: "#viewport"},
            width:200,
            height:450}); 
此函数的结果是具有以下结构的对象:

{
    position:{
        my:"top left",
        at:"top+55 left+550", // values 55 and 550 are examples :)
        of:"#viewport"
    },
    width:200,
    height:500
}
简而言之,我使用的是为
at
参数指定偏移量的选项

接下来,我创建一个对话框:

dlg.dialog({
    appendTo: '#viewport',
    autoOpen:false,
    position: windowCfg.position,
    width: windowCfg.width,
    height: windowCfg.height,
    resizable: true,
    closeOnEscape: false        .
})
打开对话框窗口时(调用
dlg.dialog('open')
),默认情况下,它的位置是从jQuery UI(
{my:“center-center”,at:“center-center”,…}
)设置的,而不是从创建对话框窗口时传递的参数设置的

我的问题是。为什么不起作用

例如,让我说以下代码运行时没有问题:

dlg=$('#dlg-Tiles')

dlg.dialog({
   appendTo:'#viewport',
   autoOpen:false,
   position: {my:'left top', at:'left+20 top+20', of:'#viewport'},
   resizable:true,
   closeOnEscape: false})

dlg.dialog('open');
窗口相对于其左上角打开,相对于其左上角的
#viewport
对象打开,偏移量为20向右和20向下


区别在哪里?我的思维错误在哪里?

你的代码对我很有用-。我注意到的唯一奇怪的事情可能就是这里的输入错误:1)您的代码交换参数顺序-
左上
左上
;2) 在
closeOnEscape:false之后拖尾
。您是否绝对确定您的
getWindowConfig()
函数正确设置了
windowCfg
?用
console.dir(windowCfg)
检查了它?您关于订单参数
左上
/
左上
的指导方针很成功。我认为这里的秩序并不重要。谢谢。你的代码对我有用-。我注意到的唯一奇怪的事情可能就是这里的输入错误:1)您的代码交换参数顺序-
左上
左上
;2) 在
closeOnEscape:false之后拖尾
。您是否绝对确定您的
getWindowConfig()
函数正确设置了
windowCfg
?用
console.dir(windowCfg)
检查了它?您关于订单参数
左上
/
左上
的指导方针很成功。我认为这里的秩序并不重要。谢谢