2017-10-21 14 views
1

s'il vous plaît ne pas me faire double emploi avec: $(document).ready equivalent without jQueryLa meilleure façon d'exécuter une fonction javascript chargement de la page

Ma question ont une petite différence. Je vais expliquer à ce sujet. J'ai été mis toute ma fonction en état de fonctionner comme ça.

$(document).ready(function() { 
$("#liLanguage").find("a").click(function() { 
      ChangLanguage(this); 
     }); 
// orther a lot of function here 
    LoadDataToGrid(); 
} 

Il est bien fait Mais, hier, mon PM dit: « vous n'avez pas besoin de mettre votre code dans la fonction prêt, vous pouvez exécuter sans fonction prêt, mettre en fonction prêt est très fou et stupide. »

J'ai été lu plus de sujet sur la fonction ready et la fonction window.onload(). Mais pas où dire que nous ne pouvons pas exécuter une fonction en état de fonctionnement. Quel est le problème avec mon code quand je mets toute la fonction en état de préparation?

C'est mieux

$(document).ready(function() { 
$("#liLanguage").find("a").click(function() { 
      ChangLanguage(this); 
     }); 
} 

Ou c'est mieux (sans fonction prêt)

$("#liLanguage").find("a").click(function() { 
      ChangLanguage(this); 
     }); 
+4

Ni "fou" ni "stupide" ne sont des critiques valides. S'il y a un vrai problème avec un morceau de code, un critique devrait être capable d'expliquer la difficulté causée par son utilisation. – Alohci

+0

Merci, au fait. Pouvez-vous me dire courir sans fonction prête mieux ou en fonction mieux? Je vois que tout est bien fait –

+0

Si le code affiché était inclus dans un élément de script après l'élément '# liLanguage' (par exemple, à la fin du corps), alors les deux versions fonctionneront.Si le code affiché était inclus dans un élément de script * avant * l'élément '# liLanguage' alors seulement celui avec le gestionnaire ready fonctionnerait. – nnnnnn

Répondre

1

Je pense que vous mettez en fonction prêt sera mieux parce que c'est indépendant où vous mettez votre code. Par exemple:

Exemple 1:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script> 
 
    $(document).ready(function() { 
 
     Test(); 
 
    }); 
 
    function Test() { 
 
     $("#test").click(function(){ 
 
      console.log(2); 
 
     }) 
 
    } 
 
</script> 
 
</head> 
 
<body> 
 
<input type = "button" id ="test" value = "Test"> 
 
</body> 
 
</html>

Mais il ne fonctionnera pas si vous mettez un code comme celui-ci.

Exemple 2:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script> 
 
    Test(); 
 
    function Test() { 
 
     $("#test").click(function(){ 
 
      console.log(2); 
 
     }) 
 
    } 
 
</script> 
 
</head> 
 
<body> 
 
<input type = "button" id ="test" value = "Test"> 
 
</body> 
 
</html>

Il fonctionnera ok si vous mettez votre script après html.

Exemple 3:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 
<input type = "button" id ="test" value = "Test"> 
 
</body> 
 
</html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script> 
 
    Test(); 
 
    function Test() { 
 
     $("#test").click(function(){ 
 
      console.log(2); 
 
     }) 
 
    } 
 
    </script>

Il est méchant: l'exemple 1, vous pouvez mettre javascript ne importe où, vous n'avez pas besoin de prendre soin à ce sujet.

4

Habituellement, PMs n'ont pas une formation d'ingénieur et ils aiment parler comme ils le font. Essayez de regarder pour cela.

Maintenant, pour répondre à votre question, vous pouvez simplement ajouter votre script dans le bas du HTML et non dans la tête. De cette façon, votre script se chargera une fois que le DOM sera prêt, c'est essentiellement ce que document.ready fait.

+0

Merci, j'ai déjà ajouté mon script dans le bas du HTML, est-ce que vous voulez dire mon code pas mal? –

+1

Rien à redire avec votre code. Regardez cette autre réponse: https://stackoverflow.com/questions/6026645/document-readyfunction-vs-script-at-the-bottom-of-page –