Question

J'ai lié les événements jQuery définis pour Mouseenter Mouseleave, ainsi que jQuery draggable. Les div sont placés dans un panneau de mise à jour et lorsqu'un clic est effectué sur un bouton, des informations sont envoyées à la base de données et le panneau de mise à jour est mis à jour. Cependant, lorsque le panneau est mis à jour, les événements jquery ne fonctionnent plus. Avez-vous une idée de la raison pour laquelle ce serait le cas?

Était-ce utile?

La solution

Vous pouvez ajouter un déclencheur asynchrone à votre page pour appeler une fonction JavaScript / jQuery après tout appel asynchrone.

Placez ce code dans votre Page_Load () de votre code aspx derrière:

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

Cet extrait de code appelle spécifiquement la fonction JavaScript / jQuery AsyncDone ();

Autres conseils

essayez d'utiliser

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

au lieu de

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

Ceci fonctionnera lorsqu'un bouton situé dans un panneau de mise à jour est cliqué. il va au serveur et rajoutera le jquery quand il reviendra. Cependant, cela ne fonctionne pas avec les publications asynchrones causées par un contrôle tel que eo: AJAXUploader, mais en combinant ceci avec la version de Bryans, vous pouvez également gérer les publications asynchrones.

Consultez cette article de blog d'Encosia, qui vous offre plusieurs façons de relier les liens après des mises à jour asynchrones. J'ai trouvé que cela résolvait mon problème, qui était similaire.

Utilisez en direct .

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

Bryan a la réponse. J'ajoute généralement cela avec certains gestionnaires d'événements, pour skinning et autres, qui se déclenchent après PostBacks avec ceci:

    /**
    *   .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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top