首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在更新面板回发后执行javascript回调?

如何在更新面板回发后执行javascript回调?
EN

Stack Overflow用户
提问于 2009-07-20 11:11:17
回答 5查看 68.5K关注 0票数 72

当用户悬停页面的某些元素时,我使用一个jQuery提示插件来显示帮助提示。

我需要注册插件事件后,页面加载使用css选择器。

问题是我正在使用ASP.NET更新面板,在第一次回发之后,提示停止工作,因为更新面板会替换页面内容,但不会重新绑定javascript事件。

我需要一种在更新面板刷新其内容后执行javascript回调的方法,这样我就可以重新绑定javascript事件以使提示再次工作。

有没有办法做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-20 11:25:59

与其将jQuery代码放在$(document).ready()中,不如把它放在里面

function pageLoad(sender, args) { 
    ... 
}

pageLoad在每次回发后执行,无论是同步的还是异步的。pageLoad是ASP.NET AJAX中用于此目的的保留函数名称。另一方面,$(document).ready()只在DOM初始就绪/加载时执行一次。

查看此Overview of ASP.NET AJAX client lifecycle events

票数 169
EN

Stack Overflow用户

发布于 2011-07-23 08:10:25

pageLoad不工作。我使用了下面的代码:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);

function pageLoaded() {
}
票数 19
EN

Stack Overflow用户

发布于 2009-07-20 11:15:54

这可能远不是最优雅的解决方案,但它仍然是一个解决方案:

public class UpdatePanel : System.Web.UI.UpdatePanel
{
    /// <summary>
    /// Javascript to be run when the updatepanel has completed updating
    /// </summary>
    [Description("Javascript to be run when the updatepanel has completed updating"),
        Category("Values"),
        DefaultValue(null),
        Browsable(true)]
    public string OnUpdateCompleteClientScript
    {
        get
        {
            return (string)ViewState["OnUpdateCompleteClientScript"];
        }
        set
        {
            ViewState["OnUpdateCompleteClientScript"] = value;
        }
    }

    protected override void OnPreRender(System.EventArgs e)
    {
        base.OnPreRender(e);
        if(!string.IsNullOrEmpty(this.OnUpdateCompleteClientScript))
            Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, string.Concat("Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args){for(var panelId in sender._updatePanelClientIDs){if(sender._updatePanelClientIDs[panelId] == '", this.ClientID, "'){", this.OnUpdateCompleteClientScript, "}}});"), true);
    }
}

像这样使用它:

<uc:UpdatePanel OnUpdateCompleteClientScript="alert('update complete');">
    <!-- stuff in here -->
</uc:UpdatePanel>

当然,您需要在您的use配置或页面中注册自定义控件才能像这样使用它。

编辑:还有,你看过jquery.live?吗?

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1152946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档