Я столкнулся с той же проблемой (диалоговое окно открывалось только один раз, после закрытия оно больше не открывалось), и попробовал решения, описанные выше, которые не решили мою проблему. Я вернулся к документации и понял, что у меня есть фундаментальное недопонимание того, как работает диалог.
Команда $ ('# myDiv'). Dialog () создает / создает экземпляр диалога, но не обязательно является правильным способом открытия его. Правильный способ открыть его - создать диалоговое окно с помощью dialog (), затем использовать диалоговое окно («открыть») для его отображения и диалоговое окно («закрыть») для его закрытия / скрытия. Это означает, что вы, вероятно, захотите установить для параметра autoOpen значение false.
Итак, процесс таков: создайте экземпляр диалога в готовом документе, затем прослушайте щелчок или какое-либо действие, которое вы хотите показать в диалоговом окне. Тогда это будет работать, раз за разом!
<script type="text/javascript">
jQuery(document).ready( function(){
jQuery("#myButton").click( showDialog );
//variable to reference window
$myWindow = jQuery('#myDiv');
//instantiate the dialog
$myWindow.dialog({ height: 350,
width: 400,
modal: true,
position: 'center',
autoOpen:false,
title:'Hello World',
overlay: { opacity: 0.5, background: 'black'}
});
}
);
//function to show dialog
var showDialog = function() {
//if the contents have been hidden with css, you need this
$myWindow.show();
//open the dialog
$myWindow.dialog("open");
}
//function to close dialog, probably called by a button in the dialog
var closeDialog = function() {
$myWindow.dialog("close");
}
</script>
</head>
<body>
<input id="myButton" name="myButton" value="Click Me" type="button" />
<div id="myDiv" style="display:none">
<p>I am a modal dialog</p>
</div>