您需要做的是根据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')
})