gpt4 book ai didi

jquery - UI 对话框上的自动高度,如果高度更改,对话框将不再垂直居中

转载 作者:行者123 更新时间:2023-12-01 01:24:31 25 4
gpt4 key购买 nike

我有下面的函数,它将 URL 加载到我的对话框中,当打开该 URL 时,函数会在文档准备就绪时运行,该函数根据值显示或隐藏 div。反过来扩展对话框,自动高度起作用,但对话框向下扩展并且不再居中。

所以对话框打开 > URL 在对话框中打开 > 显示面板运行 > 对话框扩展高度 > 对话框不再居中。

代码尝试自动重新居中

$.ui.dialog.prototype.options.autoReposition = true;
$(window).resize(function () {
$(".editDialog").dialog("option", "position", "center");
$(".ui-dialog-content:visible").each(function () {
$(this).dialog("option", "position", $(this).dialog("option", "position"));
});
});
$(".ui-dialog-content").resize(function () {
$(".ui-dialog-content:visible").each(function () {
$(this).dialog("option", "position", $(this).dialog("option", "position"));
});
});

对话框代码

$(document).ready(function () {
var width = $(window).width() / 2;
$.ajaxSetup({ cache: false });

$(".editDialog").live("click", function (e) {
var url = $(this).attr('href');
$("#dialog-edit").dialog({
title: 'Edit',
autoOpen: false,
resizable: true,
autoResize:true,
minHeight: 'auto',
width: width,
modal: true,
draggable: true,
open: function (event, ui) {
//Show the loading div on open.
$("#dvLoading").show();
//adding a callback function wich will be launched after the loading
$(this).load(url,function(response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
$(this).html(msg + xhr.status + " " + xhr.statusText);
} else $("#dvLoading").hide();
});
},
close: function (event, ui) {
$(this).dialog('close');
}
});

$("#dialog-edit").dialog('open');
return false;
});

URL 文档就绪显示/隐藏DIVS

$(document).ready(function () {
showPanel()
});
function showPanel()
{
var panel = $("#lstAssetTypes").val();
panel = panel.substr(panel.indexOf(",") + 1)

switch (panel)
{
case "User":
$("#dvWKS").show();
$("#dvNTW").hide();

break;
case "Network":
$("#dvWKS").hide();
$("#dvNTW").show();
break;
default:
break;
}
}

Div 的 HTML 名为

 <div id="dialog-confirm" style="display: none">
<p>
<span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>
Are you sure to delete?
</p>
</div>
<div id="dialog-edit" style="display: none">
<div id="dvLoading" class="loading"><img src="~/Images/loading.gif"><p>Loading please wait...</p></div>
</div>
<div id="dialog-view" style="display: none">
</div>

最佳答案

似乎无法自动检测高度变化,没有相应的事件。相反,您需要手动调用重新定位代码。使用这样的函数:

var reposition_dialog = function() {
$("#dialog-edit").dialog("option", "position", "center");
$(".ui-dialog-content:visible").each(function () {
$(this).dialog("option", "position", $(this).dialog("option", "position"));
});
}

(我将 .editDialog 从您的代码更改为 #dialog-edit,因为它看起来像是一个错误)

完成更改内容后只需调用该函数即可:

$(document).ready(function () {
showPanel()
});
function showPanel()
{
var panel = $("#lstAssetTypes").val();
panel = panel.substr(panel.indexOf(",") + 1)

switch (panel)
{
case "User":
$("#dvWKS").show();
$("#dvNTW").hide();

break;
case "Network":
$("#dvWKS").hide();
$("#dvNTW").show();
break;
default:
break;
}
reposition_dialog();
}

如果您确实想自动检测它(只有在由于某种原因您无法预测内容何时会发生变化时我才会这样做),请查看此线程: Detect element content changes with jQuery

关于jquery - UI 对话框上的自动高度,如果高度更改,对话框将不再垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17919487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com