2017-06-06 114 views
1

我想設置jQuery UI(1.12.1)對話框的絕對位置(x和y)。從各方面來看,我應該能夠做到這一點,像這樣(雖然jQuery的文檔莫名其妙地不提這句法,既不here也不here):人成功地使用這種語法jQuery UI設置絕對對話框位置什麼都不做

$('#element').dialog('option', 'position', [x, y]); 

例子是:

然而,當我這樣做時,沒有任何反應。請看下面的例子(可能要運行全屏幕):

$('#test').dialog({ 
 
    width: 200, 
 
    height: 200 
 
}); 
 

 
$('#move').click(function() { 
 
    $('#test').dialog('option', 'position', [30, 30]); 
 
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 
 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 
<body> 
 
<button id="move">Move</button> 
 
<div id="test" title="test">This is a test.</div> 
 
</body>

運行它,按下按鈕,對話框不動。

爲什麼這不適合我,我該如何設置對話框的x,y位置?

請注意,對話框在位置更改後必須保持可拖動和可調整大小。

回答

1

我想我得到它的工作..用

position: { my: "left top", at: "left+"+x+" top+"+y+"", of: window } 

,並通過讀取.position() documentation

我達到這個

$('#test').dialog({ 
 
    width: 200, 
 
    height: 200 
 
}); 
 

 
$('#move').click(function() { 
 
    var x = 30, 
 
     y = 30; 
 
    $('#test').dialog({ 
 
    //position: { my: "left top", at: "left bottom", of: window } 
 
    position: { my: "left top", at: "left+" + x + " top+" + y + "", of: window } 
 
    }); 
 
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 
 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 
<body> 
 
<button id="move">Move</button> 
 
<div id="test" title="test">This is a test.</div> 
 
</body>

+0

真棒。是的,它運作良好。謝謝!我要這樣做,但我仍然有點好奇爲什麼'[x,y]'不適合我。誰知道... –

+0

@JasonC當對話框文件是[讀取對話框位置](https://api.jqueryui.com/dialog/#option)時,我不知道你在哪裏閱讀了關於'[x,y] -位置) –