Как использовать jQuery $ (document) .ready и ASP.NET UpdatePanel вместе? - PullRequest
3 голосов
/ 17 ноября 2009

Я качаю этот бит Javascipt в разделе <head> моей страницы:

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

Отлично работает при первой загрузке страницы; однако, когда я нажимаю <asp:button>, который находится внутри <asp:updatepanel>, страница частично обновляется, но $(document).ready больше никогда не вызывается.

Это важно, потому что этот Javascript в разделе $(document).ready сворачивается и добавляет опцию «readmore» в список парафоров (или dl с class = «expander») на странице, большинство из которых следует свернуть по умолчанию.

1 Ответ

8 голосов
/ 17 ноября 2009

Вам потребуется добавить обработчик к событию endRequest на стороне клиента AJAX. Смотрите ссылки ниже для получения дополнительной информации. Это «событие» вызывается, когда механизм 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...