我有一个嵌套的 jquery 模态 Modal1 和 modal2 都包含 updatePanels。为了更新面板,我使用 javascript:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('UpDateLookUp','');
UpDateLookUp 是 modal1 的 updatePanel 的 id。 Modal1 包含 modal2 的链接,该链接位于 updatePanel 中。 Modal1 updatePanel 是面板外部的搜索条件(查找),当我在 modal1 上时效果很好,但是当我打开 modal2 (有 wpdatePaneltoo)并返回到 modal1 时,选择 Find modal2 打开整页并显示之前的信息它被关闭并返回到 modal1。如果我单击打开 modal2 的链接,一切都很好,只有当我选择不同的按钮时才会发生。
我是jquery新手,所以请帮忙。这就是我们店的发展方向。
最佳答案
这里有两三个你想要的东西。首先,如果您挂接的任何控件在 ajax 回发中消失,您将需要在页面重新加载时使用以下命令重新挂接事件处理程序:
function pageLoad(sender, args)
{
if (args.get_isPartialLoad())
{
//Re-hook code here
}
}
或者使用 $(document).ready() 函数中的 .live() 函数来添加事件 Hook 。此功能在 JQuery UI's API site 上有详细记录。 .
此外,如果您希望动画效果在进行回发之前隐藏某些内容(这将防止其在动画完成之前发生变化),请使用 .Promise().Done() 函数,如下所示:
$("#Detail").fadeOut().promise().done(function ()
{
__doPostBack('<%= UpdatePanel1.ClientID %>', '');
});
最后,当您希望在回发完成时发生动画以显示其结果时,您可以将所有这些与 bool 变量结合使用,该 bool 变量在 pageLoad 函数中启用操作,如下所示:
var ShowDetailsOnLoad = false;
function pageLoad(sender, args)
{
if (args.get_isPartialLoad())
{
if (ShowDetailsOnLoad)
{
$("#Detail").fadeIn();
ShowDetailsOnLoad = false;
}
$('DetailVisMaker').click(function()
{
$("#Detail").fadeOut().promise().done(function ()
{
__doPostBack('<%= UpdatePanel1.ClientID %>', '');
ShowDetailsOnLoad = true;
});
});
}
}
如果 div、HTML 和 UpdatePanel 设置正确,此代码将显示一个详细信息 div,当用户单击其中的链接时,它将淡出详细信息部分,运行回发,然后淡出回发完成后返回。
关于jquery 模式打开整页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727464/