ASP.NET Update Panel останавливает работу jquery - PullRequest
5 голосов
/ 30 июля 2009

Я установил привязанные события jquery для mouseenter mouseleave, а также jquery dragggable. Div помещаются в панель обновлений, и при нажатии кнопки информация отправляется в базу данных, а панель обновлений обновляется. Однако при обновлении панели события jquery больше не работают. Есть идеи, почему это так?

Ответы [ 5 ]

7 голосов
/ 30 июля 2009

Вы можете добавить на свою страницу асинхронный триггер для вызова функции JavaScript / jQuery после любого асинхронного вызова.

Поместите этот код в Page_Load () вашего кода aspx позади:

//This script handles ajax postbacks, by registering the js to run at the end of *AJAX* requests
Page.ClientScript.RegisterStartupScript(typeof(Page), "ajaxTrigger", "Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);", true);
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "EndRequest", "function EndRequestHandler(sender, args){AsyncDone();}", true);

Этот фрагмент кода будет специально вызывать функцию JavaScript / jQuery AsyncDone ();

3 голосов
/ 03 августа 2009

Посмотрите это сообщение в блоге от Encosia, которое дает вам несколько способов повторного связывания после асинхронных обновлений. Я нашел, что это решило мою проблему, которая была похожа.

3 голосов
/ 30 июля 2009

попробуйте использовать

function pageLoad(sender, args)
{ 
   // JQuery code goes here
}

вместо

   $(document).ready(function() {
      // JQuery code goes here
   });

Это будет работать при нажатии кнопки на панели обновления; он идет на сервер и повторно добавит jquery, когда вернется. Однако это не работает с асинхронными обратными вызовами, вызванными элементом управления, таким как eo: AJAXUploader, но в сочетании с версией Bryans вы также можете обрабатывать асинхронные обратные передачи

1 голос
/ 30 июля 2009

Использование в прямом эфире .

$("div").live("mouseenter", function(){
      // do something
    });
0 голосов
/ 22 декабря 2010

Брайан получил ответ. Я обычно добавляю это с некоторыми обработчиками событий для скинов и т. Д., Которые запускаются после PostBacks следующим образом:

    /**
    *   .NET Event Handlers
    *   When new code is added on to the client by way of
    *   .NET PostBacks, CSS is typically ignored.  This method
    *   can be used to add CSS to new elements as they are added
    *   asynchronously.  It calls a script at the end of every 
    *   partial post back request.
    *
    *   @example - Core.NETEventHandlers.AsyncPostBack.Init();
    */    
    var NETEventHandlers: {
        /**
        *   Async Post Back Handler
        *   calls a script at the end of every partial post back request
        */          
        AsyncPostBack: {
            EndRequest: {
                Add: function() {
                    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(NETEventHandlers.AsyncPostBack.EndRequest.Handler);
                } // EO Add
                , Handler: function(sender, args) {
                    // Handlers here.
                    alert('Hello World');
                } // EO Handler
            } // EO endRequest
            , Init: function() {
                Sys.Application.add_init(NETEventHandlers.AsyncPostBack.EndRequest.Add);
            }
        } // EO AsyncPostBack
    } // EO dotNETEventHandlers
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...