编辑:这是我编写的一个插件,它扩展了 jQuery UI 对话框以包括
单击外部时关闭以及其他功能:https://github.com/jasonday/jQuery-UI-Dialog-extended https://github.com/jasonday/jQuery-UI-Dialog-extended
以下是单击 popin 外部时关闭 jquery UI 对话框的 3 种方法:
如果对话框是模态的/有背景覆盖:http://jsfiddle.net/jasonday/6FGqN/ http://jsfiddle.net/jasonday/6FGqN/
jQuery(document).ready(function() {
jQuery("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 100,
modal: true,
open: function() {
jQuery('.ui-widget-overlay').bind('click', function() {
jQuery('#dialog').dialog('close');
})
}
});
});
如果对话框是非模态的方法 1:http://jsfiddle.net/jasonday/xpkFf/ http://jsfiddle.net/jasonday/xpkFf/
// Close Pop-in If the user clicks anywhere else on the page
jQuery('body')
.bind('click', function(e) {
if(jQuery('#dialog').dialog('isOpen')
&& !jQuery(e.target).is('.ui-dialog, a')
&& !jQuery(e.target).closest('.ui-dialog').length
) {
jQuery('#dialog').dialog('close');
}
});
非模态对话框方法二:http://jsfiddle.net/jasonday/eccKr/ http://jsfiddle.net/jasonday/eccKr/
$(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;
}
});