在asp.Net回发后,jquery手风琴没有重新启动

时间:2012-12-13 09:25:16

标签: jquery asp.net jquery-ui postback accordion

我正在制作一支jquery手风琴:

$(document).ready(function(){
   $('#accordion').accordion();
});

问题是这是一个.asp.NET应用程序,如果页面触发回发就会破坏手风琴。如何在回发时重新启动手风琴?

抱歉,我不是asp.NET的专家,也很抱歉我无法给你一个示例链接,这是因为它是受密码保护的应用程序。

感谢。

2 个答案:

答案 0 :(得分:6)

你需要在回传后使用UpdatePanel函数重新初始化手风琴:

<script type="text/javascript"> 
$(document).ready(function(){
    var prm = Sys.WebForms.PageRequestManager.getInstance();    
        prm.add_initializeRequest(InitializeRequest);
        prm.add_endRequest(EndRequest);
   // on page ready first init of your accordion
   $('#accordion').accordion();
});


function InitializeRequest(sender, args) {      
}

function EndRequest(sender, args) {
     // after the UpdatePanel finish the render from ajax call
     //  and the DOM is ready, re-initilize the accordion
     $('#accordion').accordion();
}
</script>

相对:
Asp.Net UpdatePanel in Gridview Jquery DatePicker
ASP.Net : Need to run javascript on update panel load completed
How do you get client-side script to execute on an ASP.NET postback? (from an UpdatePanel)

答案 1 :(得分:2)

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InitAccordion);
function InitAccordion(){       
   $('#accordion').accordion();}

这适用于postback和asyncpostback 在由于同步或异步回发而刷新页面上的所有内容后引发。 http://msdn.microsoft.com/en-us/library/bb397523(v=vs.100).aspx