jquery ui对话框只打开一次

fly*_*ire 24 html javascript css jquery jquery-ui

我有一个按钮,单击时会打开一个对话框.该对话框显示隐藏的div

单击X图标关闭对话框后,无法再次打开对话框.

Ale*_*ton 39

Scott Gonzalez(jQuery UI团队)在最近的博客文章中讨论了很多人在开始使用jQuery UI时遇到此问题的原因:http://blog.nemikor.com/2009/04/08/basic-usage -of最jQuery的UI的对话框/

摘录:

用户经常遇到对话框的问题是,每次用户执行某些操作(通常单击链接或按钮)时,他们都会尝试实例化新对话框.这是一个可以理解的错误,因为乍一看似乎在元素上调用.dialog()是导致对话框打开的原因.实际上,正在发生的是创建一个新的对话框实例,然后在实例化后立即打开该实例.对话框打开的原因是对话框具有autoOpen选项,默认为true.因此,当用户对元素两次调用.dialog()时,将忽略第二个调用,因为该对话框已在该元素上实例化.

解:

解决此问题的简单方法是将autoOpen设置为false的对话框实例化,然后在事件处理程序中调用.dialog('open').

$(document).ready(function() {
    var $dialog = $('<div></div>')
        .html('This dialog will show every time!')
        .dialog({
            autoOpen: false,
            title: 'Basic Dialog'
        });

    $('#opener').click(function() {
        $dialog.dialog('open');
    });
});
Run Code Online (Sandbox Code Playgroud)


Vin*_*nie 9

你在使用ui对话框吗?您应该发布一些代码,以便我们可以看到导致问题的原因.但这里有一个猜测(因为我最近犯了同样的错误).使用ui对话框时,您只需初始化对话框一次.

 $(document).ready(function() {
   $('#dialog').dialog({
     autoOpen:false,
     modal:'true',
     width:450,
     height:550
  });
 $('#MyButton').click(openDialog);    

});
Run Code Online (Sandbox Code Playgroud)

此代码初始化对话框但不显示对话框.单击MyButton时,openDialog函数将打开对话框.

   var openDialog = function(){

       $('#dialog').load('loadurl.php');//load with AJAX

      //optionally change options each time it is clicked
       $('#dialog').dialog('option', 'buttons',{
          "Cancel":function(){
             $('#dialog').dialog('close');
          }
      });

     //actually open the dialog
     $('#dialog').dialog('open');

};
Run Code Online (Sandbox Code Playgroud)