這篇文章主要講解了“ASP.NET中UpdatePanel與jQuery怎么同時(shí)使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“ASP.NET中UpdatePanel與jQuery怎么同時(shí)使用”吧!
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為湟源企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),湟源網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。今天,在.NET中使用了UpdatePanel,里面的輸入框使用了jQuery的日歷選擇器:
復(fù)制代碼 代碼如下:
運(yùn)行之后正常:
可是,運(yùn)行之后,點(diǎn)擊"查詢",頁(yè)面局部刷新,發(fā)現(xiàn)日歷選擇器不出來(lái)了,找了很多資料,他們講:
分析1:UpdatePanel
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è)面的其它部分并沒有狀態(tài)更改。
分析2:jQuery
jQuery可以通過(guò)簡(jiǎn)單的代碼對(duì) HTML元素添加各種屬性和事件句柄,我們可以在這里看到官方的文檔:
Tutorials:How jQuery Works
http://docs.jquery.com/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局部刷新之后,其中的文本框元素被重寫,而此時(shí)整個(gè)DOM樹并沒有重新加載,所以jQuery的ready事件并沒有觸 發(fā),所以文本框元素就失去了原有的特效。
解決方案:
我們可以將ready事件中執(zhí)行的代碼提取出來(lái):
復(fù)制代碼 代碼如下:
在jQuery中也放入這個(gè)函數(shù):
復(fù)制代碼 代碼如下:
然后通過(guò)捕獲ScriptManager的EndRequest事件,在每次 UpdatePanel局部刷新之后執(zhí)行一次jQuery初始化代碼,如下所示:
復(fù)制代碼 代碼如下:
最后,再在
復(fù)制代碼 代碼如下:
這樣,即便UpdatePanel局部刷新,jQuery代碼也能執(zhí)行。
感謝各位的閱讀,以上就是“ASP.NET中UpdatePanel與jQuery怎么同時(shí)使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)ASP.NET中UpdatePanel與jQuery怎么同時(shí)使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!