同じ問題が発生し(ダイアログは一度だけ開き、閉じた後は再び開きません)、上記の解決策を試しましたが、問題は解決しませんでした。ドキュメントに戻って、ダイアログがどのように機能するかについて根本的な誤解があることに気づきました。
$('#myDiv')。dialog()コマンドはダイアログを作成/インスタンス化しますが、必ずしもダイアログを開くための適切な方法ではありません。それを開く適切な方法は、dialog()を使用してダイアログをインスタンス化し、dialog('open')を使用して表示し、dialog('close')を使用して閉じる/非表示にすることです。これは、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>