2017-10-21 92 views
1

请不要重复我的功能,最好的方法:$(document).ready equivalent without jQuery运行JavaScript在页面加载

我的问题有一点点差别。我会解释一下。 我已经把所有的功能都放在这样的功能上。

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

它做得很好 但是,昨天我下午说:“你不需要把你的代码在准备功能,您可以在不准备功能运行时,放在准备功能是很疯狂和愚蠢”

我已经阅读了关于ready函数和window.onload()函数的更多主题。但是,不要说我们不能在现成的功能中运行一个功能。当我把所有的功能放在现成的功能中时,我的代码有什么问题?

这是更好的

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

或者这是更好的(没有现成功能)

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

“疯狂”或“愚蠢”都不是有效的批评。如果一段代码存在真正的问题,评论者应该能够解释使用它造成的困难。 – Alohci

+0

谢谢,顺便说一下。你能告诉我没有更好的准备好功能或准备好的功能运行更好吗?我看到一切都做得好 –

+0

如果显示的代码包含在'#liLanguage'元素后面的脚本元素中(例如,在主体的末尾),那么这两个版本都可以工作。如果显示的代码包含在'#liLanguage'元素之前的脚本元素*中,那么只有具有就绪处理程序的代码才能工作。 – nnnnnn

回答

1

我认为,你把准备好的功能会更好,因为它是独立的,你把你的代码。例如:

例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>

但是,如果你把这样的代码将无法运行。

例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>

,如果你把你的脚本的HTML后,它会运行正常。

例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>

它的意思是:用例1,你可以把JavaScript的任何地方,你不需要去关心它。

4

通常,项目经理不具有工程背景,他们喜欢谈论像他们这样做。试着注意这一点。

现在要回答您的问题,您可以简单地将您的脚本添加到HTML的底部而不是头部。这样,在DOM准备就绪后,您的脚本将会加载,每个基本上是document.ready所做的。

+0

谢谢,我已经添加了我的脚本在HTML的底部,你的意思是我的代码没有错? –

+1

你的代码没有问题。看看这个其他答案:https://stackoverflow.com/questions/6026645/document-readyfunction-vs-script-at-the-bottom-of-page –