2013-09-23 3 views
0

Je charge mes fichiers html dans un div #content afin d'éviter que la page entière ne soit rechargée en cliquant sur un lien. Je fais cela en appelant ce qui suit dans mon index.html:HTML & JS Markup - meilleure façon possible?

[...] 
<div id="content"> 

    <script type="text/javascript">$("#content").load("home.html");</script> 

</div> 

Le problème est que pas javascript dans mes global.js sera exécutée si elle est liée à l'un des fichiers html qui sera chargé dans mon #content div.

Afin de gérer ce fait, je mets simplement le js du fichier html correspondant directement dans celui spécifique en l'affichant avec la commande <script>, par exemple. comme ceci:

<script type="text/javascript"> 

$(document).ready(function() { 
    $(".faq").click(function() { 
     $(this).find(".faq_answer").toggle(); 
    }); 
}); 

</script> 

Je suis tout à fait malheureux avec elle et donc ma question est la suivante: est-il un moyen que je pourrais mettre mes js dans mon global.js fichier?

+1

En savoir plus sur la délégation d'événements: http://learn.jquery.com/events/event-delegation/. –

+0

Si tout ce dont vous avez besoin est la gestion des événements, la délégation d'événements est géniale. Si vous avez d'autres scripts à exécuter uniquement lors de la navigation vers différentes "pages", vous devriez en savoir plus sur le routage, l'historique et probablement require.js. – Ronny

Répondre

2

Si je comprends correclty votre question, vous devez utiliser la délégation même d'assigner des gestionnaires d'événements aux éléments qui n'existe pas encore

$(document).on("click",".faq", function(){ ... }) 

document peut être remplacé par un conteneur de .faq qui existe à lier le temps.

Pour plus de détails consulter la section « Direct et délégué » here

+0

Merci beaucoup, cela a résolu le problème. Je ne connaissais pas la délégation d'événement avant, toujours bon d'apprendre quelque chose de nouveau! – sqe

0

Essayez de charger la page à travers vos global.js à l'intérieur de le garder dans votre page html. Conservez le script qui va charger le contenu en premier. Cela devrait fonctionner

Questions connexes