在UpdatePanel內(nèi)jquery easyui效果失效的解決方法
更新時(shí)間:2010年04月11日 21:56:14 作者:
項(xiàng)目中使用到了 updatePanel 和jquery-easyui 。使用updatepanel的好處自然是頁(yè)面不刷新,用戶感覺(jué)比較好,同時(shí)也減少了一部分?jǐn)?shù)據(jù)量的傳輸。
使用easyui 的好處除了界面還不錯(cuò)之外,也因?yàn)槭褂梅奖恪?
<div class="easyui-tabs" style="width: 300px">
<div title="搜索"> ...</div>
<div title="選擇">...</div>
<div title="返回">...</div>
</div>
只要給他定義個(gè)相應(yīng)的class 就能實(shí)現(xiàn)各種效果。

但是,把它放在updatepanel里面,且不是首次就讓他顯示出來(lái)的話就出故障了。
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<div class="easyui-tabs" style="width: 300px">
<div title="搜索">
...</div>
<div title="選擇">
...</div>
<div title="返回">
...</div>
</div>
</asp:View>
<asp:View ID="View2" runat="server">
<div class="easyui-tabs" style="width: 300px">
<div title="搜索">
...</div>
<div title="選擇">
...</div>
<div title="返回">
...</div>
</div>
</asp:View>
</asp:MultiView>
在multipleView里面定義兩個(gè)一樣的view,內(nèi)容也一樣。并把 MultiView1放到updatepanel里面。
然后設(shè)置他顯示第一個(gè)view
MultiView1.ActiveViewIndex =0;
瀏覽一下。顯示正常。但是當(dāng)我們改變view的顯示時(shí),例如把上面的改成 MultiView1.ActiveViewIndex =1;那么第二個(gè)veiw的效果就全無(wú)了。
到j(luò)query.easyui.min.js 里找原因??吹搅诉@么一句
r=$(".easyui-tabs",_1ec);
if(r.length){
r.tabs();
大概就是在網(wǎng)頁(yè)加載完后,尋找class定義為easyui-tabs 的層。并把效果附加給他。
那么可以想象,當(dāng)頁(yè)面加載時(shí),我們顯示的是第一個(gè)view,那么js就找到view里的層,并賦予其效果。
然后我們?cè)趗pdatepanel里更新了顯示的view,內(nèi)容雖然切換到了第二個(gè)view了。但是頁(yè)面沒(méi)有重新加載,上面的js代碼沒(méi)有對(duì)新的view執(zhí)行改變。
所以決策就是當(dāng)updatepanel回發(fā)后重新執(zhí)行js代碼。
在頁(yè)面定義一個(gè)重新綁定的函數(shù)。
function EndRequestHandler() {
$(".easyui-tabs").tabs();
}
再定義一個(gè)事件。
function reload() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
add_endRequest
PageRequestManager 類是一個(gè)管理瀏覽器中服務(wù)器 UpdatePanel 控件的部分頁(yè)更新。此外,還定義一些屬性、事件和方法,用以通過(guò)客戶端腳本對(duì)網(wǎng)頁(yè)進(jìn)行自定義。通過(guò)調(diào)用 getInstance 方法來(lái)得到 PageRequestManager 類的實(shí)例。然后通過(guò) add_endRequest 方法來(lái)綁定 endRequest 事件(異步回發(fā)完成,并且控制權(quán)返回到瀏覽器之后引發(fā))。這樣以后,每次updatepanel發(fā)生回調(diào)后,都會(huì)觸發(fā)EndRequestHandler()函數(shù)。重新綁定一次效果。$(document).ready(function() { reload(); })
失效問(wèn)題就解決了。
復(fù)制代碼 代碼如下:
<div class="easyui-tabs" style="width: 300px">
<div title="搜索"> ...</div>
<div title="選擇">...</div>
<div title="返回">...</div>
</div>
只要給他定義個(gè)相應(yīng)的class 就能實(shí)現(xiàn)各種效果。

但是,把它放在updatepanel里面,且不是首次就讓他顯示出來(lái)的話就出故障了。
復(fù)制代碼 代碼如下:
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<div class="easyui-tabs" style="width: 300px">
<div title="搜索">
...</div>
<div title="選擇">
...</div>
<div title="返回">
...</div>
</div>
</asp:View>
<asp:View ID="View2" runat="server">
<div class="easyui-tabs" style="width: 300px">
<div title="搜索">
...</div>
<div title="選擇">
...</div>
<div title="返回">
...</div>
</div>
</asp:View>
</asp:MultiView>
在multipleView里面定義兩個(gè)一樣的view,內(nèi)容也一樣。并把 MultiView1放到updatepanel里面。
然后設(shè)置他顯示第一個(gè)view
復(fù)制代碼 代碼如下:
MultiView1.ActiveViewIndex =0;
瀏覽一下。顯示正常。但是當(dāng)我們改變view的顯示時(shí),例如把上面的改成 MultiView1.ActiveViewIndex =1;那么第二個(gè)veiw的效果就全無(wú)了。
到j(luò)query.easyui.min.js 里找原因??吹搅诉@么一句
復(fù)制代碼 代碼如下:
r=$(".easyui-tabs",_1ec);
if(r.length){
r.tabs();
大概就是在網(wǎng)頁(yè)加載完后,尋找class定義為easyui-tabs 的層。并把效果附加給他。
那么可以想象,當(dāng)頁(yè)面加載時(shí),我們顯示的是第一個(gè)view,那么js就找到view里的層,并賦予其效果。
然后我們?cè)趗pdatepanel里更新了顯示的view,內(nèi)容雖然切換到了第二個(gè)view了。但是頁(yè)面沒(méi)有重新加載,上面的js代碼沒(méi)有對(duì)新的view執(zhí)行改變。
所以決策就是當(dāng)updatepanel回發(fā)后重新執(zhí)行js代碼。
在頁(yè)面定義一個(gè)重新綁定的函數(shù)。
復(fù)制代碼 代碼如下:
function EndRequestHandler() {
$(".easyui-tabs").tabs();
}
再定義一個(gè)事件。
復(fù)制代碼 代碼如下:
function reload() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
add_endRequest
PageRequestManager 類是一個(gè)管理瀏覽器中服務(wù)器 UpdatePanel 控件的部分頁(yè)更新。此外,還定義一些屬性、事件和方法,用以通過(guò)客戶端腳本對(duì)網(wǎng)頁(yè)進(jìn)行自定義。通過(guò)調(diào)用 getInstance 方法來(lái)得到 PageRequestManager 類的實(shí)例。然后通過(guò) add_endRequest 方法來(lái)綁定 endRequest 事件(異步回發(fā)完成,并且控制權(quán)返回到瀏覽器之后引發(fā))。這樣以后,每次updatepanel發(fā)生回調(diào)后,都會(huì)觸發(fā)EndRequestHandler()函數(shù)。重新綁定一次效果。$(document).ready(function() { reload(); })
失效問(wèn)題就解決了。
相關(guān)文章
JQuery處理json與ajax返回JSON實(shí)例代碼
json數(shù)據(jù)是一種經(jīng)型的實(shí)時(shí)數(shù)據(jù)交互的數(shù)據(jù)存儲(chǔ)方法,使用到最多的應(yīng)該是ajax與json配合使用了,下面我來(lái)給大家介紹jquery處理json數(shù)據(jù)方法2014-01-01
JQuery常見(jiàn)節(jié)點(diǎn)操作實(shí)例分析
這篇文章主要介紹了JQuery常見(jiàn)節(jié)點(diǎn)操作,結(jié)合實(shí)例形式分析了jQuery針對(duì)元素節(jié)點(diǎn)的添加、刪除常見(jiàn)操作函數(shù)使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-05-05
jQuery UI工具提示框部件Tooltip Widget
這篇文章介紹了jQuery UI工具提示框部件Tooltip Widget,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
使用jquery獲取url及url參數(shù)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇使用jquery獲取url及url參數(shù)的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
Juery解決tablesorter中文排序和字符范圍的方法
這篇文章主要介紹了Juery解決tablesorter中文排序和字符范圍的方法,實(shí)例分析了jQuery針對(duì)tablesorter中文排序和字符范圍的解決方法,需要的朋友可以參考下2015-05-05

