Панель ASP.NET обновление останавливается на jQuery от работы


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

5 5

5 ответов:

Вы можете добавить на свою страницу асинхронный триггер для вызова функции 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 ();

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

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

Вместо

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

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

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

Использоватьжить .

$("div").live("mouseenter", function(){
      // do something
    });

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

    /**
    *   .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