Frage

Ich habe Jquery Veranstaltungen für MouseEnter- mouseleave gesetzt binded sowie jquery ziehbar. Die divs werden in einem Update-Panel platziert und wenn eine Schaltfläche geklickt Informationen in die Datenbank und der Update-Panel aktualisiert wird gesendet. Allerdings, wenn die Platte die jquery Ereignisse aktualisiert wird nicht mehr funktionieren. Jede Idee, warum dies der Fall wäre?

War es hilfreich?

Lösung

Sie können einen asynchronen Trigger zu Ihrer Seite hinzufügen eine JavaScript / jQuery-Funktion nach jedem Asynchron-Aufruf zu nennen.

Dieser Code in Ihrem Page_Load () Ihren aspx Code hinter:

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

Dieser Code-Schnipsel wird die JavaScript / jQuery-Funktion AsyncDone speziell nennen ();

Andere Tipps

versuchen Sie es mit

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

statt

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

Dies funktioniert, wenn eine Taste, die innerhalb eines Update-Panel ist angeklickt wird; es geht an den Server und die jquery erneut hinzufügen, wenn sie zurückkommt. Allerdings bedeutet dies nicht mit asynchronen Postbacks Arbeit durch eine Steuer verursacht wie die eo: AJAXUploader aber die Kombination mit Bryans Version können Sie asynchrone Postbacks handhaben als auch

Haben Sie einen einen Blick dieses Blog-Post von Encosia die Ihnen ein paar Möglichkeiten von Rebinding nach Asynchron-Updates gibt. Ich fand das mein Problem behoben, das ähnlich war.

Verwenden Sie Live .

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

Bryans bekam die Antwort. Ich in der Regel anfügen, dass bei einigen Event-Handler, für Skinning und so, das Feuer nach Postbacks mit diesem:

    /**
    *   .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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top