Jquery ui jQueryUI选项卡内的jQueryUI对话框-有趣的定位
我有一个使用jQueryUI选项卡的网页,其中一些选项卡具有侦听器,当数据被另一个进程更改时,这些侦听器接收回调,并提供用最新数据更新页面 值得指出的是,此选项卡的内容位于iframe中 我使用jQueryUI对话框弹出消息,但是如果用户当时打开了另一个选项卡,当他们返回该选项卡时,该对话框会被卡在页面的左上角: 如果在该选项卡打开时弹出对话框,则不会发生这种情况-它很好地居中,即使我离开该选项卡并稍后返回该选项卡,也会保持居中: 这显然与当时隐藏的选项卡有关,有人知道解决方案吗?当用户打开该选项卡时,也许我能够重新定位该对话框?或者,不管选项卡是否打开,都可以通过某种方式使其居中 以下是对话框的代码:Jquery ui jQueryUI选项卡内的jQueryUI对话框-有趣的定位,jquery-ui,iframe,jquery-ui-dialog,jquery-ui-tabs,Jquery Ui,Iframe,Jquery Ui Dialog,Jquery Ui Tabs,我有一个使用jQueryUI选项卡的网页,其中一些选项卡具有侦听器,当数据被另一个进程更改时,这些侦听器接收回调,并提供用最新数据更新页面 值得指出的是,此选项卡的内容位于iframe中 我使用jQueryUI对话框弹出消息,但是如果用户当时打开了另一个选项卡,当他们返回该选项卡时,该对话框会被卡在页面的左上角: 如果在该选项卡打开时弹出对话框,则不会发生这种情况-它很好地居中,即使我离开该选项卡并稍后返回该选项卡,也会保持居中: 这显然与当时隐藏的选项卡有关,有人知道解决方案吗?当用户打开
/*
show any message in a confirmation box and handle the response.
Close loading dialog if it's open otherwise
jQuery gets upset about the order of dialog creation and destruction
*/
function showConfirm(msg, confirmFunction, recordId) {
parent.closeCustomPopup('loader');
if(
$j('#confirmInFrame').html(msg).dialog({
fluid: true,
width: 'auto',
height: 'auto',
modal: true,
draggable: false,
resizable: false,
closeOnEscape: true,
position: { my: "center center", at: "center center", of: window },
buttons: {
'OK': function() {
$j( this ).dialog( 'close' );
confirmFunction(recordId);
},
Cancel: function() {
$j( this ).dialog( 'close' );
}
}
}).dialog( 'open' )
){
confirmFunction;
}
在父页面中,我尝试抓取打开的对话框并将其重新定位到中心位置,但我无法抓取它们(可能是因为它们位于iframe内),并收到“错误:无法在初始化之前调用对话框上的方法;尝试调用方法“选项”:
谢谢你的帮助 对话框位置的默认值为“中心”。我怀疑是其他东西通过CSS抛出了它。你可以在你的文章中也包含这些信息,或者创建一个JSFIDLE的例子来说明这个问题。当对话框打开时,当我在选项卡内时,它会显示在中间,只有当该选项卡不是焦点时才会显示。我认为这是因为当选项卡关闭时,jquery通过设置样式来隐藏选项卡(div)以显示:none,所以我认为当对话框在这个隐藏的div中弹出时,它没有任何中心。这只是一个假设,因为您没有包含未知的HTML。为什么不将
移出选项卡呢。或者在运行showConfirm()
时创建
。div是选项卡,当您在另一个选项卡上时它是隐藏的,当您单击它的选项卡时它会显示出来。这是基于示例的标准jqueryui选项卡行为,而不是它的外观。请提供一个适当的例子。
$j('#tabs').tabs({
activate: function(event ,ui){
var activeDialogs = $j('iframe:visible').contents().find('.ui-dialog:visible');
activeDialogs.each(function(i) {
$j(this).dialog("option", "position", { my: "center center", at: "center center", of: window });
});
}
});