$(document).ready(function() {
pageLoad();
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
pageLoad();
});
});
function pageLoad() {
//你要執行的程式碼
}
加入Sys.WebForms.PageRequestManager.getInstance().add_endRequest 這個事件,並重新執行一次原本$(document).ready所執行的程式就可以解決這個問題了。pageLoad();
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
pageLoad();
});
});
function pageLoad() {
//你要執行的程式碼
}
如果你要在UpdatePanel的(Partial) PostBack執行前,去處理一些事件,像是記錄當下的數值之類的,你可以用 Sys.WebForms.PageRequestManager.getInstance().add_beginRequest這個事件來做處理。
如果你在$(document).ready中有設定css的class,這個方式在Chrome、Firefox等瀏覽器下,也可以確實的解決問題。但在IE下,有時你會發現,不管你怎麼重新設定css class,好像都沒作用,javascript事件、function、甚至用$(selector).css()來設定css,全部都有跑,但唯獨設定css class的部份卻跟沒跑一樣。
如果你的css class是寫在網頁中,那這個問題的解決方式有二:
1.將你的css屬性,全改用$(selector).css()來設定。
2.將你class的style區段移至<head>中,這樣就可以解決問題了,真是莫明奇妙...
參考資料:
http://stackoverflow.com/questions/256195/jquery-document-ready-and-updatepanels
http://stackoverflow.com/questions/1732164/losing-css-class-added-through-jquery-on-updatepanel-partial-postback
http://sudheerkondraguntaprogramming.blogspot.com/2011/05/issue-with-css-stylesheet-and.html
沒有留言:
張貼留言