UpdatePanel 與 jQuery之間衝突問題

當UpdatePanel和jQuery一塊使用的時候會有一些問題

問題重現:

1.單獨創建一個page。
2.爲其添加UpdatePanel1,在UpdatePanel1裏添加LabelA。
3.添加Button1用作AutoPostback。
4.寫jQuery語句更新LabelA的內容,每更新一次界面添加“1”。
5.添加ScriptManager。
5.打開這個page,可以看到LabelA有更新,再點擊Button1,LabelA不會有反應

問題分析:

UpdatePanel只用作局部更新,UpdatePanel實現局部刷新的核心在於MicrosoftAjaxWebForm.js文件,它的局部刷新過程就是將頁面提交到服務端(包含ViewState),執行服務端代碼後異步將在UpdatePanel內的HTML進行重新呈現。在此過程中,頁面的其它部分並沒有狀態更改。UpdatePanel的局部更新不會促使整個DOM的重新加載,而jQuery的function()入口是在整個DOM更新一次之後才執行

修正方法:

在jQuery的function()方法裏添加Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
用於捕獲ScriptManager的EndRequest事件,把PostBack後需要執行的方法放在EndRequestHandler方法中。每次PostBack之後就都會執行這部分jQuery語句

心得體會:

在使用UpdatePanel和jQuery的時候要注意兩者之間的衝突問題,使用server刷新界面的同時儘量避免也同時使用client刷新


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章