あなたがする必要があるのは、配置しoffset()
たいページ内の要素に基づいて、位置配列の配列を動的に作成することです。
以下は、次の単純な html に基づいて動的に配置されたダイアログを作成するデモ コードです。
HTML
<div class="col"><button>Open Dialog</button></div>
<div class="col"><button>Open Dialog</button></div>
<div class="col"><button>Open Dialog</button></div>
JS:
/* how much to offset from the main element*/
var dialogOffset = {
top: 50,
left: 10
}
$('button').click(function() {
var $parent = $(this).closest('div.col');
var parentPos = $parent.offset()
/* create position array for new dialog*/
var dialogPosition = [parentPos.left + dialogOffset.left, parentPos.top + dialogOffset.top];
var parentIndex = $('.col').index($parent)
$('<div>').dialog({
position: dialogPosition,
width: 150,
title: 'Column '+(parentIndex+1) ,
close: function() {
$(this).remove()
}
})
})
デモ:
フルページ: http://jsfiddle.net/CPtp4/show/
コード ビュー: http://jsfiddle.net/CPtp4/
ダイアログを使用するためのさまざまな設定があるため、いつ位置を設定するかについては、アプリケーションによって少し異なります。この方法で、ダイアログを開くたびに位置を設定できます。
/* iniitalize dialog on page load*/
$('#dialog').dialog({
autoOpen:false
});
$('#myButton').click(function(){
var pos=$('#myDiv').offset();
var dialogPos=[pos.left, pos.top];
$('#dialog').dialog('option','position',dialogPos).dialog('open')
})