单击叠加层时关闭 jQuery UI 对话框

Bjø*_*erg 0 javascript jquery jquery-ui modal-dialog

当人们点击叠加层时,我想关闭我的模式,通常你会使用

jQuery('.ui-widget-overlay').bind('click', function() {
            jQuery('#dialog').dialog('close');
        })
Run Code Online (Sandbox Code Playgroud)

但是我在创建它之后加载了我的模态,所以上面的代码似乎以某种方式干扰了我的。到目前为止,这是我的代码。

jQuery('.ui-widget-overlay').bind('click', function() {
            jQuery('#dialog').dialog('close');
        })
Run Code Online (Sandbox Code Playgroud)
var dialog = $(".dialog").dialog({
        autoOpen: false,
        closeText: "",
        width: 'auto',
        modal: true,
        position: { my: "center top", at: "center top+30", of: "body" },
        show: {
            effect: 'fade',
            duration: 250,

        },
        hide: {
            effect: 'fade',
            duration: 250
        },
        
    });

    $(".currentDay").click(function () {
        var id = event.target.id;
        var url = '/Home/CalenderPartial/' + id;

        dialog.load(url, function () {
            dialog.dialog("open");

        });

    });
Run Code Online (Sandbox Code Playgroud)

brk*_*brk 5

您可以在open方法内绑定事件

var dialog = $(".dialog").dialog({
  autoOpen: false,
  closeText: "",
  width: 'auto',
  modal: true,
  open: function(event, ui) {   //added here
    jQuery('.ui-widget-overlay').on('click', function() {
      jQuery('#dialog').dialog('close');
    });
  },
  position: {
    my: "center top",
    at: "center top+30",
    of: "body"
  },
  show: {
    effect: 'fade',
    duration: 250,

  },
  hide: {
    effect: 'fade',
    duration: 250
  },

});
Run Code Online (Sandbox Code Playgroud)