JQuery UI диалог, имеющий несколько диалогов влияет на положение - PullRequest
1 голос
/ 01 октября 2010

Поскольку я делаю несколько диалогов, я сталкиваюсь с трудностями.Вот мой код:

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 голосов
/ 01 октября 2010

После отключения автооткрытия, необходимости задавать позиции с помощью опций и вызова метода open успешно сработало.

Оказывается, функция автооткрытия не позволяет расположить диалоги точно друг над другом, поэтому соответствующим образом перемещает их.

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");
    }
});
0 голосов
/ 01 октября 2010

Запуск примера кода, я не вижу исходного движения.Я заметил, что они складываются неправильно, но я думаю, это потому, что вы добавляете 140 к одному и 40 к другому.Возможно, это была опечатка.

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