Вопрос

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

Это было полезно?

Решение

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

Брайан получил ответ. Я обычно добавляю это с некоторыми обработчиками событий для скинов и так далее, которые запускаются после 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top