0

如何在页面上尚未呈现的控件上连接 jQuery?我尝试覆盖以下方法,但它们不起作用,因为 StepNavigationTemplateContainerID html 标记在此事件上尚不可用:Render、OnLoad、OnInit 等

可能是因为我使用的是 UpdatePanel 吗?当我使用 UpdatePanel 时我可以覆盖什么方法/事件,以便我可以在那里发出 jQuery 钩子?

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    HookNextButton();
}       



void HookNextButton()
{
    string nextButtonClientId = wizardCooking.FindControl("StepNavigationTemplateContainerID").FindControl("btnNextStep").ClientID + "_lnkButton";
    var scriptKey = "Yo";

    string theScript =
        string.Format(
    @"
                    $(function() {{      


                        $('#{0}').click(function() {{
                            alert('hi');

                        }});

                    }});
                ", nextButtonClientId);
    Type cstype = this.GetType();

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the startup script is already registered.
    if (!cs.IsStartupScriptRegistered(cstype, scriptKey))
    {
        ScriptManager.RegisterStartupScript(
                this, this.GetType(), scriptKey, theScript, true);
    }


}
4

1 回答 1

3

使用 . 委托它 .on() 。这将确保事件与稍后将插入 DOM 的元素相关联..

$('body').on('click' , '#buttonid' , function() {
    // Your code here
    // This will handle the case of buttons that 
    // will be rendered later

});
于 2012-10-16T05:50:55.893 回答