如何在页面上尚未呈现的控件上连接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);
}
}
答案 0 :(得分:3)
使用.on()
委托它。
这将确保事件与稍后将插入DOM的元素相关联。
$('body').on('click' , '#buttonid' , function() {
// Your code here
// This will handle the case of buttons that
// will be rendered later
});