2010-10-01 3 views
1

Поскольку я делаю несколько диалогов, я сталкиваюсь с трудностями. Вот мой код:Диалог jquery ui, имеющий несколько диалогов, влияет на позицию

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] }); 

это правильно установлен, теперь я собираюсь добавить 2-ым.

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

da heck? он переместил другой сам по себе ... теперь они оба неправильно расположены.

$('.dialog_1').dialog({ width: 263, position: [300, 700] }); 
$('.dialog_2').dialog({ width: 263, position: [250, 550] }); 
$('.dialog_3').dialog({ width: 263, position: [200, 400] }); 

хорошо, теперь все выглядит фанки. Вы действительно должны попробовать это самостоятельно, чтобы понять, что я имею в виду ...;!. (

спасибо заранее

+0

только мое предположение, проверив его в jsfiddle, пытаетесь создать эффект каскадного диалога? если ошибка возникла из-за того, что вы переключили left_value и top_value на свою позицию, попробуйте использовать: position: [800 - top_value, 800 - left_value] – lock

+0

да, я пытаюсь создать каскадный эффект, где один находится друг над другом. – tpae

ответ

0

После отключения AutoOpen, и того, чтобы установить позиции через опции , и позвонил открытым способом, успешно сработал.

Оказывается, функция 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"); 
    } 
}); 
+0

Вы можете принять свой собственный ответ, чтобы указать, что это решение, к которому вы пришли. –

0

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

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

Я специально разместил его таким образом, чтобы сделать каскадный эффект, как если бы одна фотография была поверх другой. – tpae

Смежные вопросы