如何一起使用jQuery $(document).ready和ASP.NET UpdatePanel?

Nat*_*ate 4 .net asp.net jquery asp.net-ajax

我在<head>页面的部分中摇了一下Javascipt :

<script type="text/javascript">
    $(document).ready(function() {
        $('dl.expander dd').expander
        (
            {   slicePoint: 50,    widow: 2,   expandEffect: 'show', userCollapseText: '[^]' }
        );
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这在第一次加载页面时效果很好; 但是,当我单击一个页面<asp:button>内部时,<asp:updatepanel>部分刷新,但$(document).ready永远不再调用.

这很重要,因为该$(document).ready部分中的这个Javascript 正在折叠并在页面上添加一个"readmore"选项到pararaphs列表(或者带有class ="expandder"的dl),默认情况下大多数都应该折叠.

Kyl*_*man 9

您需要向AJAX客户端endRequest事件添加处理程序.有关更多信息,请参阅以下链接.当ajax引擎完成对服务器的请求时,将调用此"事件",并且对于在更新面板内的内容上运行的任何javascript都是必需的.

http://www.asp.net/ajax/documentation/live/overview/AJAXClientEvents.aspx

http://msdn.microsoft.com/en-us/library/bb383810.aspx

<script type="text/javascript">
    $(function() {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    });

    function EndRequestHandler(sender, args) {
        // code that you want to run when the request is complete
    }
<script>
Run Code Online (Sandbox Code Playgroud)