2009-11-17 6 views
3

Je suis bascule ce peu de Javascipt dans la section <head> de ma page:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('dl.expander dd').expander 
     (
      { slicePoint: 50, widow: 2, expandEffect: 'show', userCollapseText: '[^]' } 
     ); 
    }); 
</script> 

Cela fonctionne très bien la première fois que la page est chargée; Cependant, lorsque je clique sur un <asp:button> qui se trouve à l'intérieur d'un <asp:updatepanel>, la page est partiellement rafraîchie, mais le $(document).ready n'est jamais appelé de nouveau. Ceci est important, car ce Javascript dans la section $(document).ready s'effondre et ajoute une option "readmore" à une liste de pararaphs (ou dl avec class = "expandeur") sur la page, dont la plus grande partie devrait être réduite par défaut.

Répondre

8

Vous devrez ajouter un gestionnaire à l'événement endRequest côté client AJAX. Voir les liens ci-dessous pour plus d'informations. Cet "événement" est appelé lorsque le moteur ajax termine une requête au serveur, et est nécessaire pour tout javascript s'exécutant sur le contenu qui se trouve dans le panneau de mise à jour.

http://www.asp.net/ajax/documentation/live/overview/AJAXClientEvents.aspx

http://msdn.microsoft.com/en-us/library/bb383810.aspx

<script type="text/javascript"> 
    $(function() { 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    }); 

    function EndRequestHandler(sender, args) { 
     // code that you want to run when the request is complete 
    } 
<script> 
+0

Excellent, ths travaillé exacly comme je avais besoin. – Nate

+0

Je cherche une solution aussi simple depuis longtemps maintenant. La solution la plus simple que j'ai trouvée de loin. – iamwonder

Questions connexes