jquery ui对话框,有多个对话框影响位置

时间:2010-10-01 00:07:54

标签: jquery jquery-ui jquery-ui-dialog

当我进行多个对话时,我遇到了困难。这是我的代码:

var dialog_count = 3;

$(function() {

    var left_value = 0;
    var top_value = 0;
    for(var i = 1; i < dialog_count+1; i++) {
        $('.dialog_' + i).dialog({ width: 263, position: [800 - left_value, 800 - top_value] });
        left_value = left_value + 40;
        top_value = top_value + 140;
    }
});

它应该做什么:在给定位置上整齐地堆叠每个对话框

它的作用:不知何故,在添加新对话框时重新定位每个对话框。

我试着玩弄它,这就是我做的,分3步

$('.dialog_1').dialog({ width: 263, position: [300, 700] });

这是正确定位的,现在我要添加第二个。

$('.dialog_1').dialog({ width: 263, position: [300, 700] });
$('.dialog_2').dialog({ width: 263, position: [250, 550] });
哎呀?它自己移动了另一个......现在它们都没有正确定位。

$('.dialog_1').dialog({ width: 263, position: [300, 700] });
$('.dialog_2').dialog({ width: 263, position: [250, 550] });
$('.dialog_3').dialog({ width: 263, position: [200, 400] });
好吧,现在看起来很时髦。你真的必须亲自去尝试才能理解我所说的......;(

谢谢你提前!

2 个答案:

答案 0 :(得分:0)

运行示例代码,我没有看到原来的一个动作。我注意到它们没有正确堆叠,但我认为这是因为你将140加到另一个而40加到另一个。这可能是一个错字。

top_value = top_value + 140; // Try + 40 instead

答案 1 :(得分:0)

禁用autoOpen后,必须通过选项设置位置,并调用open方法,成功运行。

事实证明,autoOpen功能不会让对话框完全位于彼此的顶部,因此会相应地移动它们。

var dialog_count = 3;

$(function() {

    var left_value = 0;
    var top_value = 0;
    for(var i = 1; i < dialog_count+1; i++) {
        $('.dialog_' + i).dialog({ width: 263, position: [500, 500], autoOpen: false });
    }
    for(var i = 1; i < dialog_count+1; i++) {
        $('.dialog_' + i).dialog("option", "position", [500,500]);
        $('.dialog_' + i).dialog("open");
    }
});