Comment puis-je vérifier que mon document ne contient qu'une instance de $(document).ready(function()
?
Si elle est incluse plusieurs fois, puis-je supprimer des instances en double (de manière similaire à la fonction require_once();
de PHP)?
Comment puis-je vérifier que mon document ne contient qu'une instance de $(document).ready(function()
?
Si elle est incluse plusieurs fois, puis-je supprimer des instances en double (de manière similaire à la fonction require_once();
de PHP)?
Êtes-vous en train de dire que le même code pourrait être ajouté plus d'une fois?
Si oui, je suppose que vous pourriez définir une propriété globale indiquant si le code à l'intérieur a déjà été exécuté, puis tester cette propriété dans le gestionnaire ready()
.
$(document).ready(function() {
// check a flag to see if this has been called yet
if(!window.thisCodeHasRun) {
// set the flag to show this has been called
window.thisCodeHasRun = true;
/* run your code */
}
});
Il serait préférable de prendre soin de ce côté serveur, mais si vous devez le faire côté client, cela devrait fonctionner.
Une option consiste à utiliser lier et délier:
$(document).bind("ready",function(){
console.log("zero");
});
$(document).bind("ready",function(){
console.log("one");
});
// get rid of previous ready events
$(document).unbind("ready");
$(document).bind("ready",function(){
console.log("two");
});
Dans ce qui précède, le premier et le deuxième événement prêt ne sera jamais le feu parce unbind a été appelé. Donc vous aurez "deux" dans la console.
écrire en mode javascript? : P – Petrogad
juste comme une note de côté: il est parfaitement bien d'avoir plusieurs fonctions '$ (document) .ready', elles seront appelées dans l'ordre où elles ont été ajoutées. – BrokenGlass
@BrokenGlass: Ils ne sont pas toujours appelés dans l'ordre: http://bugs.jquery.com/ticket/7279 - cela ne se produit que si vous vous liez à l'événement ready. – Mottie