jquery 1.4.2 - jquery UI对话框,外部点击时关闭(非模态)

时间:2011-11-28 20:48:21

标签: jquery jquery-ui dialog modal-dialog

使用UI对话框。 jquery 1.4.2

我有我的代码在外面点击时关闭对话框。 这对我不起作用。但是,如果我在本地开发上升版,它可以正常工作。 问题是,我不能为网站的这一部分提供jquery版本。

如何在非模态对话框外点击以关闭?

// Close Pop-in If the user clicks anywhere else on the page
             jQuery('body')
              .bind(
               'click',
               function(e){
            if(
             jQuery('.detailsPopup').dialog('isOpen')
             && !jQuery(e.target).is('.ui-dialog, a')
             && !jQuery(e.target).closest('.ui-dialog').length
            ){
             jQuery('.detailsPopup').dialog('close');
            }
               }
              );

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

http://jsfiddle.net/GKfZM/117/

它正在运行1.4.4,但试一试。适用于autoOpen真或假。

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

var closedialog;

function overlayclickclose() {
    if (closedialog) {
        $('#your-dialog-id').dialog('close');
    }
    //set to one because click on dialog (focus) box sets to zero 
    closedialog = 1;
}

$('#your-dialog-id').dialog({
    autoOpen: false,
    open: function() {
        closedialog = 1;
        $(document).bind('click', overlayclickclose);
    },
    focus: function() {
        closedialog = 0;
    },
    close: function() {
        $(document).unbind('click');
    },
    buttons: {
        Submit: function() {
        $(this).dialog('close');
    }
  }
});

答案 1 :(得分:0)

$(document).click(function(e) {
    if (e.target.classList.contains('ui-widget-overlay'))
     {
        $( "#yourDialogId" ).dialog("close");
     }
});