3

我有一个嵌套的 jquery modals Modal1 和 modal2 都包含 updatePanels。要更新我正在使用 javascript 的面板:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('UpDateLookUp','');

UpDateLookUp 是 modal1 的 updatePanel 的 id。模式 1 包含模式 2 的链接,该链接位于更新面板中。Modal1 updatePanel 是面板外部的搜索条件(查找),当我在 modal1 上时效果很好,但是当我打开 modal2(有 wpdatePaneltoo)并返回 modal1 时,选择 Find modal2 opens to full page 并显示之前的信息它已关闭并返回到 modal1。如果我点击打开 modal2 的链接,一切都很好,只有当我选择不同的按钮时才会出现。

我是 jquery 的新手,所以请帮忙。这就是我们商店的发展方向。

4

1 回答 1

0

这里有两三件你想要的东西。首先,如果您要挂接的任何控件在您的 ajax 回发中消失了,您将需要在页面重新加载时使用以下内容重新挂接您的事件处理程序:

function pageLoad(sender, args) 
{
    if (args.get_isPartialLoad()) 
    {
        //Re-hook code here
    }
}

或使用 $(document).ready() 函数中的 .live() 函数来添加事件挂钩。这个函数在JQuery UI 的 API 站点上有很好的记录。

此外,如果您希望动画效果在执行回发之前隐藏某些内容(这将防止它在动画完成之前更改),请使用 .Promise().Done() 函数,如下所示:

$("#Detail").fadeOut().promise().done(function () 
{
    __doPostBack('<%= UpdatePanel1.ClientID %>', '');
});

最后,当您希望在回发完成时发生动画以显示其结果,您可以将所有这些与一个布尔变量结合使用,该变量在 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,当用户单击其中的链接时,它将淡出详细信息部分,运行回发,然后在何时淡入回传完成。

于 2011-12-19T21:20:00.637 回答