J'ai rencontré le même problème (dialogue ouvert qu'une fois, après la fermeture, il ne serait pas ouvrir de nouveau), et j'ai essayé les solutions ci-dessus qui n'a pas résolu mon problème. Je suis retourné à la documentation et réalisé que j'avais une incompréhension fondamentale de la façon dont la boîte de dialogue.
Le $('#myDiv').la boîte de dialogue() commande crée/instancie la boîte de dialogue, mais n'est pas nécessairement la bonne façon de l'ouvrir il. La bonne façon d'ouvrir c'est pour instancier la boîte de dialogue boîte de dialogue(), puis utilisez la boîte de dialogue ("ouvert") pour l'afficher et de dialogue (fermer) pour fermer/cacher. Cela signifie que vous aurez probablement souhaitez définir la autoOpen option à false.
Ainsi, le processus est: instanciation de la boîte de dialogue sur le document prêt, puis de les écouter pour la cliquez ou toute action que vous voulez afficher la boîte de dialogue. Ensuite, il sera, à chaque fois!
<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>