我试图覆盖jQuery UI模式对话框的默认行为,以便在单击叠加层时关闭该框.我第一次打开它后,下面的代码将关闭对话框,然后单击叠加层.当我再次打开对话框时,单击叠加层不会执行任何操作.我在这里错过了一个活动.谁能指出我在这里做错了什么?
谢谢!
$(function(){ $('#production_schedule_dialog').dialog({ autoOpen: false,width: 570,modal: true,cloSEOnEscape: true }); $('#production_schedule_dialog_link').click(function(){ $('#production_schedule_dialog').dialog('open'); return false; }); $(document).bind('click',dialogBlur); }); var dialogBlur = function(event){ var target = $(event.target); if (target.is('.ui-dialog') || target.parents('.ui-dialog').length) { return; } $('.ui-dialog:visible').find('.ui-dialog-titlebar-close').trigger('click'); $(document).unbind('click',dialogBlur); }
解决方法
最简单的方法:
http://www.ryanjeffords.com/blog/entry/closing-a-jquery-ui-dialog-when-the-dialog-loses-focus
http://www.ryanjeffords.com/blog/entry/closing-a-jquery-ui-dialog-when-the-dialog-loses-focus
添加这个:
$('.ui-widget-overlay').live("click",function() { //Close the dialog $("#dialog").dialog("close"); });