Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Jquery ui jQuery UI对话框:单击外部时如何关闭对话框?_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

Jquery ui jQuery UI对话框:单击外部时如何关闭对话框?

Jquery ui jQuery UI对话框:单击外部时如何关闭对话框?,jquery-ui,jquery-ui-dialog,Jquery Ui,Jquery Ui Dialog,实际上,我没有看到这样的信息 在这种情况下,有关闭对话框的选项: 1) 推动Esc 2) 单击对话框中的“确定”或“关闭”按钮 但如果单击外部,如何关闭对话框 谢谢 我在以下位置找到了解决方案: $(文档).ready(函数(){ $(“#dialog”).dialog(); $('.ui小部件覆盖)').live(“单击”,函数(){ $(“对话框”)。对话框(“关闭”); }); }); 以下是非模态对话框的两种其他解决方案: 如果对话框为非模态方法1: 方法1: 非模态对话

实际上,我没有看到这样的信息

在这种情况下,有关闭对话框的选项:

1) 推动Esc

2) 单击对话框中的“确定”或“关闭”按钮

但如果单击外部,如何关闭对话框

谢谢

我在以下位置找到了解决方案:


$(文档).ready(函数(){
$(“#dialog”).dialog();
$('.ui小部件覆盖)').live(“单击”,函数(){
$(“对话框”)。对话框(“关闭”);
});    
});   

以下是非模态对话框的两种其他解决方案:

如果对话框为非模态方法1: 方法1:

非模态对话框方法2:


面对同样的问题,我创建了一个小插件,可以在对话框外部单击时关闭对话框,无论是模式对话框还是非模式对话框。它支持同一页面上的一个或多个对话框

更多信息请访问我的网站:

该插件也位于github上:

劳伦特这是我的解决方案

例如,我有

<div id="dialog1">Some content in here</div>
<div id="dialog2">Different content in here</div>
<div id="dialog3">And so on...</div>

如果对话框是模态的,则在创建对话框选项时,将这3行代码粘贴到
open
函数中:

open: function(event,ui) {
    $('.ui-widget-overlay').bind('click', function(event,ui) {         
        $('#myModal').dialog('close');
    });
}

太糟糕了。。。我将尝试寻找其他可用性方面的解决方案,在我看来,如果对话框不是模态的,当你点击外部时关闭对话框是一种奇怪的行为。无论如何,这里有一个。可能[这个][1]或[这个][2]会帮助你。[1] :[2]:可能的副本
  $(function() {
            $( "#dialog" ).dialog({
                autoOpen: false, 
                minHeight: 100,
                width: 342,
                draggable: true,
                resizable: false,
                modal: false,
                closeText: 'Close',
                  open: function() {
                      closedialog = 1;
                      $(document).bind('click', overlayclickclose);
                  },
                  focus: function() {
                      closedialog = 0;
                  },
                  close: function() {
                      $(document).unbind('click');
                  }



        });

         $('#linkID').click(function() {
            $('#dialog').dialog('open');
            closedialog = 0;
        });

         var closedialog;

          function overlayclickclose() {
              if (closedialog) {
                  $('#dialog').dialog('close');
              }

              //set to one because click on dialog box sets to zero
              closedialog = 1;
          }


  });
<div id="dialog1">Some content in here</div>
<div id="dialog2">Different content in here</div>
<div id="dialog3">And so on...</div>
// This closes the dialog when the user clicks outside of it.
$("body").on('click', '.ui-widget-overlay', function() {
    if( $("div.ui-dialog").is(":visible") )
    {
        var openDialogId = $(".ui-dialog").find(".ui-dialog-content:visible").attr("id");
        if ($("#"+openDialogId).dialog("isOpen"))
        {
            $("#"+openDialogId).dialog('close');
        }
    }        
});
open: function(event,ui) {
    $('.ui-widget-overlay').bind('click', function(event,ui) {         
        $('#myModal').dialog('close');
    });
}