Pergunta

Eu tenho binded eventos jQuery definidos para mouseleave mouseenter, bem como arrastável jQuery. Os divs são colocados em um painel de atualização e informações quando um botão é clicado é enviado para o banco de dados e painel de atualização é atualizado. No entanto, quando o painel é atualizado os eventos jQuery não funcionam mais. Alguma idéia de por que isso seria o caso?

Foi útil?

Solução

Você pode adicionar um disparador assíncrona para sua página para chamar uma função JavaScript / jQuery após qualquer chamada assíncrona.

Coloque este código em seu Page_Load () de seu código aspx trá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 trecho de código irá chamar especificamente a função AsyncDone JavaScript / jQuery ();

Outras dicas

tente usar

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

em vez de

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

Isto irá funcionar quando um botão que está dentro de um painel de atualização é clicado; ele vai para o servidor e vai voltar a adicionar o jQuery quando ele volta. No entanto, isso não funciona com postbacks assíncronos causado por um controle, como o OE: AJAXUploader mas combinando isso com a versão Bryans você pode manipular postbacks assíncronos bem

Tenha um olhar a este post de Encosia que lhe dá um par de formas de religação após as atualizações assíncronas. Achei isso resolvido o meu problema que foi semelhante.

Use vivo .

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

O Bryan tem a resposta. Eu normalmente acréscimo que com alguns manipuladores de eventos, para esfola e tal, que o fogo depois de postagens com este:

    /**
    *   .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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top