web-dev-qa-db-fra.com

Comment appeler une fonction dans $ (document) .ready

J'essaie de déboguer mon application Web qui utilise jQuery.

Dans Firebug, j'appelle des fonctions à l'intérieur du $ (document) .ready ..

 function val() { console.log('validated outside doc.ready'); }
 $(document).ready(function()
 {

    console.log('document ready...');

    function validate() { console.log('validated!'); }
 }

Dans la console Firebug, je tape validate() et il dit que ce n'est pas une fonction

Si je tape val() cela fonctionne très bien.

Comment appeler validate depuis la console?

23
IEnumerable

Vous n'appelez pas une fonction comme ça, vous venez de définir la fonction.

L'approche correcte consiste à définir la fonction en dehors de document.ready et appelez-le à l'intérieur:

// We define the function
function validate(){
  console.log('validated!');
}

$(document).ready(function(){
  // we call the function
  validate();
});

Une autre option est de auto-invoquer la fonction comme ça:

$(document).ready(function(){
   // we define and invoke a function
   (function(){
     console.log('validated!');
   })();
});
58
anmarti

Votre fonction validate est locale à la fonction que vous avez transmise au gestionnaire jQuery ready.

si tu fais:

window.validate = function(){ /*....*/ };

vous pourrez accéder à partir de la console. Mais ce n'est pas une bonne pratique de polluer la portée mondiale à moins que ce soit juste pour le débogage.

7
Tim

eh bien, y a-t-il une raison pour laquelle vous auriez besoin de cette fonction dans le document prêt? ce n'est qu'à l'intérieur de ces crochets (portée) que la fonction existera. il suffit de le déplacer, ou tout simplement à l'intérieur du document.

1
monxas