关于updatepanel回传之后JS失效问题

 关于这个问题困扰了很久了 刚开始使用的时候 由于整个页面都只有一个updatepanel,发现只要有它页面回传之后 开始加载的js就会失效,问了同学 群里的朋友 也都没能说的特别清楚的。

只能自己琢磨,于是发现在后台用ScriptManager.RegisterStartupScript(),这个可以解决 问题是 每次回传都要调用一下很麻烦,总觉得应该有更好的解决办法,可是自己能力有限也找不出来。

在后来发现只要控件不再updatepanel里边 那先前加载的JS就不会失效,于是总是想办法吧缩小updatepanel的范围,导致一个页面有很多的Updatepanel,更愁人。

今天又遇到这个问题了 于是又是goole有事百度的 看了很多种方法 发现了一个比较好的方法。

在EndRequestHandler的方法里可以有多个方法 这样问题就很好的解决了效果还是挺好的。

提供两个参考网站:http://msdn.microsoft.com/zh-cn/library/bb311028.aspx

http://hi.baidu.com/a_longge2009/blog/item/9956cb23ca971ea94723e849.html

由于自己功底太浅 不能很好的解释原理 希望有大神看到可以指点一下,帮助我们这些个小菜鸟。

View Code

$(document).ready( function (){
SetBtnClass();
ReloadJs();
})

function ReloadJs(){
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}

function EndRequestHandler(){
SetBtnClass();
}
function SetBtnClass(){
$(
" .hdyk-linkbutton " ).addClass( " l-btn-default " );
$(
" .hdyk-linkbutton-a " ).addClass( " l-btn-selected " );
$(
" .hdyk-linkbutton " ).click( function (){
$(
" .hdyk-linkbutton " ).removeClass( " l-btn-selected " );
$(
this ).addClass( " l-btn-selected " );
});
}

你可能感兴趣的:(update)