Pregunta

He enlazado los eventos jquery establecidos para mouseenter mouseleave, así como jquery draggable. Los divs se colocan en un panel de actualización y cuando se hace clic en un botón, la información se envía a la base de datos y el panel de actualización se actualiza. Sin embargo, cuando el panel se actualiza, los eventos jquery ya no funcionan. ¿Alguna idea de por qué este sería el caso?

¿Fue útil?

Solución

Puedes agregar un disparador asíncrono a tu página para llamar a una función JavaScript / jQuery después de cualquier llamada asíncrona.

Coloque este código en su Page_Load () de su código aspx detrás:

//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);

Este fragmento de código llamará específicamente a la función JavaScript / jQuery AsyncDone ();

Otros consejos

intenta usar

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

en lugar de

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

Esto funcionará cuando se haga clic en un botón que se encuentra dentro de un panel de actualización; Va al servidor y volverá a agregar el jQuery cuando vuelva. Sin embargo, esto no funciona con devoluciones asincrónicas causadas por un control como el eo: AJAXUploader, pero combinando esto con la versión de Bryans, también puede manejar devoluciones asincrónicas

Eche un vistazo a este publicación de blog de Encosia, que te ofrece un par de maneras de volver a vincular después de las actualizaciones asíncronas. Encontré que esto resolvió mi problema, que era similar.

Utilice en vivo .

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

Bryan tiene la respuesta. Por lo general, agrego eso con algunos controladores de eventos, para el desollado y demás, que se activan después de PostBacks con esto:

    /**
    *   .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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top