Я создаю приложение, которое широко использует JQuery UI Dialogs. Я столкнулся с проблемой, которая возникает при открытии нескольких диалогов одновременно, и я не могу понять, как это исправить, если это вообще возможно.
По сути, это выглядит так:
- Пользователь открывает диалоговое окно
A
(верх: 100px, высота: 300px)
- Пользователь открывает диалог
B
(верх: 100 пикселей, высота: 300 пикселей)
- Пользователь закрывает диалог
A
- Все диалоговые окна открываются после сдвига вверх
A
. например: диалоговое окно B
top
свойство субстратов диалоговое окно A
height
(100px - 300px = -200px): диалоговые окна исчезают.
Я пришел к такому выводу, используя Firebug Inspect и Web Developer.
Если диалоговое окно B
(открытое после диалогового окна A
) сначала закрывается, проблема не возникает. Я также пытался использовать vanilla UI (т. Е. Нет таблиц стилей, кроме загруженных jQuery), и это все еще происходит. Кажется, при закрытии диалогового окна возникает триггер, который я не могу переопределить.
Использование position: fixed;
(как предлагает @TheVillageIdiot ) исправляет его, но все равно происходит, когда диалоговое окно уничтожено.
Вот пример:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<link type="text/css" rel="stylesheet" media="all" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
</head>
<body>
<div id="dialog-1">
</div>
<div id="dialog-2">
</div>
<script type="text/javascript">
$('#dialog-1').dialog({
close: function() {
$(this).dialog('destroy');
},
height: 300,
position: [100, 100],
show: 'scale',
hide: 'drop',
resizable: false,
title: 'A',
});
$('#dialog-2').dialog({
close: function() {
$(this).dialog('destroy');
},
height: 300,
position: [100, 100],
show: 'scale',
hide: 'drop',
resizable: false,
title: 'B',
});
</script>
</body>
</html>
Любые предложения приветствуются.