Dans mon application php, j'ai plusieurs modèles qui se combinent pour former une seule page. donc dire votre sur le propos de nous page, le modèle ressemblerait à cecidocument.ready est appelé plusieurs fois
<?php
$this->render("header.php");
?>
my about us page
<?php
$this->render("footer.php");
?>
qui est juste une façon élégante de faire un include(). Cependant, header.php a du javascript qui s'exécute sur document.ready via le framework jquery, tout comme la page qui nécessite l'en-tête. de sorte que vous avez quelque chose comme ça
<?php
$this->render("header.php"); // has its own $(document).ready
?>
<script type="text/javascript">
$(document).ready(function(){
console.log("test");
});
</script>
my about us page
<?php
$this->render("footer.php");
?>
Le bug que je fais l'expérience est que document.ready est s'appelé pour chaque document.ready sur la page. dans la console de cas ci-dessus montre
Test
Test
Si je commente le rendu de header.php, le document.ready est appelé juste une fois comme je veux. En plus d'utiliser un sémaphore, est-ce une meilleure façon d'éviter cela? J'ai essayé de mettre en mémoire tampon la sortie, mais cela ne semble pas fonctionner.
Edit: sortie finale ajoutée par demande
<script type="text/javascript">
$(document).ready(function(){
// do some javascript like highlighting
// form elements with specific classes
});
</script>
display header here
<script type="text/javascript">
$(document).ready(function(){
console.log("test");
});
</script>
my about us page
display footer
Quelle est la sortie HTML de cela? Le PHP est presque certainement hors de propos? –
Je ne suis pas de votre question si vous voulez changer quelque chose dans le php ou dans le javascript. –
Si vous le mettez dans le fichier d'en-tête et que le corps va être appelé deux fois n'est-ce pas? –