UpdatePanel和Jquery沖突的解決方法
在第一次頁(yè)面加載時(shí),元素A的X效果正常,點(diǎn)擊B之后,頁(yè)面局部刷新,此時(shí),回到A,元素A失去X效果.
開(kāi)始以為是前端我這到程序員那里出現(xiàn)問(wèn)題,但仔細(xì)檢查之后發(fā)現(xiàn)沒(méi)有,后來(lái)了解了下頁(yè)面應(yīng)用了ASP.NET AJAX局部刷新,這就明朗了,估計(jì)是和JQUERY沖突了。
問(wèn)題重現(xiàn): 1.ASP.NET AJAX在頁(yè)面中添加ScriptManager和UpdatePanel
2.在UpdatePanel中添加元素A
3.用jQuery對(duì)元素A添加X(jué)效果
4.在UpdatePanel中加一個(gè)Button B用作postback
這樣問(wèn)題就出現(xiàn)了。
分析1: UpdatePanel在應(yīng)用中主要用于局部刷新,避免整個(gè)頁(yè)面的Postback。UpdatePanel實(shí)現(xiàn)局部刷新的核心在于MicrosoftAjaxWebForm.js文件,它的局部刷新過(guò)程就是將頁(yè)面提交到服務(wù)端(包含ViewState),執(zhí)行服務(wù)端代碼后異步將在UpdatePanel內(nèi)的HTML進(jìn)行重新呈現(xiàn)。在此過(guò)程中,頁(yè)面的其它部分并沒(méi)有狀態(tài)更改。
分析2: jQuery可以通過(guò)簡(jiǎn)單的代碼對(duì)HTML元素添加各種屬性和事件句柄,我們可以在這里看到官方的文檔: Tutorials:How jQuery Works
在這里,我們可以得知,jQuery有個(gè)重要的事件標(biāo)記“ready”,一般對(duì)HTML元素的效果和事件句柄都通過(guò)這個(gè)ready事件來(lái)添加,如下: $(document).ready(function () { $(“p”).text(“The DOM is now loaded and can be manipulated.”); });
官方對(duì)此的說(shuō)明是:ready事件會(huì)在DOM完全加載后運(yùn)行一次,OK,至此,問(wèn)題的原因差不多明白了:
原因: 因?yàn)樵赨pdatePanel局部刷新之后,其中的元素A被重寫,而此時(shí)整個(gè)DOM樹并沒(méi)有重新加載,所以jQuery的ready事件并沒(méi)有觸發(fā),所以元素A就失去了原有的特效。
解決方案: 我們可以將ready事件中執(zhí)行的代碼提取出來(lái),然后通過(guò)捕獲ScriptManager的EndRequest事件,在每次UpdatePanel局部刷新之后執(zhí)行一次jQuery初始化代碼,如下所示: <script type=”text/javascript” > function slide(){ //here is code } function load() { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); } function EndRequestHandler() { slide(); } </script >
最后就是需要 添加 <body onload="load()" >
相關(guān)文章
jQuery簡(jiǎn)單實(shí)現(xiàn)彩色云標(biāo)簽效果示例
這篇文章主要介紹了jQuery簡(jiǎn)單實(shí)現(xiàn)彩色云標(biāo)簽效果,結(jié)合實(shí)例形式分析了jQuery隨機(jī)數(shù)運(yùn)算與頁(yè)面元素樣式動(dòng)態(tài)操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
jquery 校驗(yàn)中國(guó)身份證號(hào)碼實(shí)例詳解
這篇文章主要介紹了jquery 校驗(yàn)中國(guó)身份證號(hào)碼實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
jQuery實(shí)現(xiàn)簡(jiǎn)單二級(jí)下拉菜單
本文給大家分享的是使用jQuery實(shí)現(xiàn)簡(jiǎn)單二級(jí)下拉菜單的代碼,非常的簡(jiǎn)單實(shí)用,這里推薦給大家,有需要的小伙伴可以美化下,直接帶走。2015-04-04
用jquery寫的菜單從左往右滑動(dòng)出現(xiàn)
這篇文章主要介紹了用jquery寫的菜單從左往右滑動(dòng)出現(xiàn)的效果,需要的朋友可以參考下2014-04-04
EasyUI修改DateBox和DateTimeBox的默認(rèn)日期格式示例
本篇文章主要介紹了EasyUI修改DateBox和DateTimeBox的默認(rèn)日期格式示例,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01
jquery插件jquery.nicescroll實(shí)現(xiàn)圖片無(wú)滾動(dòng)條左右拖拽的方法
這篇文章主要介紹了jquery插件jquery.nicescroll實(shí)現(xiàn)圖片無(wú)滾動(dòng)條左右拖拽的方法,實(shí)例分析了jquery.nicescroll插件實(shí)現(xiàn)圖片拖拽效果的方法,需要的朋友可以參考下2015-08-08

