2010-06-07 6 views
0

J'ai une page maître qui fait référence à jquery + jqueryui. Tout va bien. Dans la page de contenu je placé:Dans la page de contenu, l'événement jquery document ready se déclenche avant le chargement de la page de contenu.

$(document).ready(function() { 
     $("#tabs").tabs(); 
    }); 

Il se trouve que l'événement se déclenche prêt avant le code HTML de la page de contenu est chargé: /. Alors, comment déterminer quand toute la page de contenu est chargée?

Modifier mon balisage:

page maître:

<form runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <Scripts> 
    <asp:ScriptReference Path="~/Scripts/jquery-1.4.1-vsdoc.js" /> 
    <asp:ScriptReference Path="~/Scripts/jquery-ui-1.8.2.custom.min.js" /> 
    </Scripts> 
</asp:ScriptManager> 

page de contenu:

<div id="tabs"> 
    <div id="whatWorkedWellDiv"> 
     <fieldset> 
      <legend>What Worked Well</legend> 
      <br /> 
      <label for="user"> 
       Name</label> 
      <input type="text" name="user" value="" /><br /> 
      <label for="emailaddress"> 
       Email Address:</label> 
      <input type="text" name="emailaddress" value="" /><br /> 
      <label for="comments"> 
       Comments:</label> 
      <textarea name="comments"></textarea><br /> 
      <label for="terms"> 
       Agree to Terms?</label> 
      <input type="checkbox" name="terms" class="boxes" /><br /> 
      <input type="submit" name="submitbutton" id="submitbutton" value="Submit" /> 
     </fieldset> 
    </div> 
    <div id="whatCouldHaveGoneBetterDiv"> 
     <fieldset> 
      <legend>What could have gone better</legend> 
      <br /> 
      <label for="user"> 
       Name</label> 
      <input type="text" name="user" value="" /><br /> 
      <label for="emailaddress"> 
       Email Address:</label> 
      <input type="text" name="emailaddress" value="" /><br /> 
      <label for="comments"> 
       Comments:</label> 
      <textarea name="comments"></textarea><br /> 
      <label for="terms"> 
       Agree to Terms?</label> 
      <input type="checkbox" name="terms" class="boxes" /><br /> 
      <input type="submit" name="submitbutton" id="submit1" value="Submit" /> 
     </fieldset> 
    </div> 
</div> 

JScript:.

$ (document) .ready (function() { $ ("# onglets") onglets(); });

Répondre

1

Si vous utilisez frames/iframes cela peut être possible, puisque le gestionnaire .ready() mettrait le feu sur ce DOM dans lequel il est en fait exécuté.

Une autre façon de procéder est la suivante: si vous 'rechargez' certaines parties de votre site asyncronous.

Quoi qu'il en soit, si vous avez différents DOM sur votre site, vous avez besoin d'un gestionnaire individuel .ready() dans chacun d'entre eux.

Si vous n'avez aucune de ces constelations, veuillez fournir votre balisage html.

+0

J'ai mis à jour ma question avec le balisage. Je ne fais pas de chargement dynamique ou de cadres/iframes ... –

+0

@Vladimir: où insérez-vous votre javascript? Avez-vous essayé de faire un simple 'alert()' dans '.ready()' ou d'accéder à un élément DOM? – jAndy

+0

le javascript est inséré dans un fichier séparé. Le problème est que le document prêt est exécuté lorsque la page maître est chargée, et non lorsque la page de contenu est chargée. –

0

Effectuez les opérations suivantes dans votre MasterPage

<script language="javascript" type="text/javascript" src='<%=ResolveClientUrl("~/Scripts/jquery-1.4.2.min.js")%>'></script> 
1

Je suis arrivé ce travail en déplaçant le

<script type="text/JavaScript" src="Scripts/DocumentReadyScript.js"></script> 

de la section

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 

au

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent"> 

section

Questions connexes