Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery ui对话框只打开一次_Javascript_Jquery_Html_Css_Jquery Ui - Fatal编程技术网

Javascript jquery ui对话框只打开一次

Javascript jquery ui对话框只打开一次,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,我有一个按钮,点击时会打开一个对话框。 该对话框显示一个隐藏的div 单击X图标关闭对话框后,该对话框将无法再次打开。您正在使用ui对话框吗?您应该发布一些代码,以便我们可以看到是什么导致了您的问题。但这里有一个猜测(因为我最近犯了同样的错误)。使用ui对话框时,只需初始化对话框一次 $(document).ready(function() { $('#dialog').dialog({ autoOpen:false, modal:'true', width

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


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

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

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

});
此代码初始化对话框,但不显示它。单击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');

};
Scott Gonzalez(jQuery UI团队的成员)在最近的一篇博文中谈到了很多人在开始使用jQuery UI时遇到这个问题的原因:

摘录:

用户经常遇到的问题 对话是指他们试图 每次实例化一个新对话框 用户执行一些操作 (通常单击链接或 按钮)。这是可以理解的 错误是因为乍一看它 似乎是在一台计算机上调用.dialog() 元素是导致对话框 打开事实上,正在发生的是 正在创建新的对话框实例 创建,然后该实例 之后立即打开 实例化。原因是 对话框打开是因为对话框具有 自动打开选项,默认为 对。因此,当用户调用.dialog()时 对一个元素执行两次,第二次调用 已忽略,因为该对话框已关闭 已经在上面实例化了 元素

解决方案:

解决这个问题的简单方法是 使用 自动打开设置为false,然后调用 .dialog(“打开”)在事件处理程序中

$(文档).ready(函数(){
变量$dialog=$('')
.html('每次都会显示此对话框!')
.对话({
自动打开:错误,
标题:“基本对话框”
});
$('#opener')。单击(函数(){
$dialog.dialog('open');
});
});

作为对已接受答案的补充,我想补充一点,即在asp.net更新面板中使用此选项时需要注意。 如果单击该按钮,则将发生回发,弹出窗口将打开,但不会再次打开,因为发生了回发。因此,您应该确保用于打开弹出窗口的按钮不会回发。 即:

点击我

邮政编码或链接…:-(你用什么代码隐藏和显示对话框?有些代码会很棒。一般来说,不要忘记在关闭/关闭时确保没有导致任何错误。如果对话框在事件中初始化和显示,会发生什么情况?是否存在性能风险或只是不好的做法?不起作用,可能只是此对话框的设计不好?
$(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');
    });
});
<asp:LinkButton ID="btn1" runat="server" OnClientClick="return false;">Click me</asp:LinkButton>