这就是我想要做的事情
<script type="text/javascript" src="resources/application.js"></script>
<script type="text/javascript" >
$(document).ready(createHeader());
$(document).ready(scriptSet());
</script>
id喜欢避免将两者分开,虽然我通常只在标题内部看到脚本链接,但是文件.ready函数在放在那里时似乎不起作用。然而,当放置在身体的末端时,一切似乎都完全正常,所以这会导致任何问题或者这很好吗?
答案 0 :(得分:8)
从功能上讲,只要您将代码包含在$(document).ready(function(){ });
和中, >> jQuery文件包含后,就不会> strong>问题,如果它在head
或body
中。 $(document).ready
确保在执行任何脚本之前完全加载DOM。
HOWEVER ,将body
底部的所有脚本包含和脚本放在最佳中,以便加载效果。
This article explains it nicely.
示例:强>
<body>
<!-- MY HTML CODE -->
<!-- START javascript -->
<script type="text/javascript" src="/javascript/jquery/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="/javascript/jquery/plugins/jquery.random_plugin.js"></script>
<script type="text/javascript" src="/javascript/jquery/plugins/jquery.random_plugin2.js"></script>
<script type="text/javascript" src="/javascript/some_other_scripts.js"></script>
<script type="text/javascript" language="JavaScript">
//<![CDATA[
$(document).ready(function(){
// my code
});
//]]>
</script>
<!-- END javascript -->
</body>
答案 1 :(得分:1)
在正文中使用脚本标记没有问题。请记住,页面是自上而下解析的,因此必须在使用之前包含脚本。
答案 2 :(得分:0)
Nop,实际上它可以将你的脚本放在HTML的末尾。“/ p>
一个好的做法是将所有的javascript都放在另一个文件中,只需设置一个标题来调用它,如果可能的话甚至压缩文件。
现在,我会更改此代码
$(document).ready(function(){
createHeader();
scriptSet();
});
所以你不要再调用$(document).ready两次:)
答案 3 :(得分:0)
您是否意识到您在$(document).ready()
内放置的功能不会等待DOMContentLoaded
触发?您必须将它们包装在函数调用(事件处理程序)中,以避免在它们出现在代码中时立即调用它们。匿名函数通常都可以。
$(document).ready(function(){
createHeader();
scriptSet();
});
答案 4 :(得分:0)
我已经部署了许多Web应用程序,并且脚本在body标签中没有遇到任何问题。我喜欢将它放在页面的末尾,以免妨碍页面上可见元素的下载进度。我相信谷歌也已经用他们的一些脚本(也许是分析?)来做到这一点。
就像其他一些人所说的那样,确保在$(document).ready()之前有你的jQuery引用;呼叫。它很容易过去,很难排除故障:)
JMAX
答案 5 :(得分:0)
如果将脚本include和blocks放在BODY
元素中,通常无关紧要;在大多数情况下,它们会完美运行。有些人认为这是一种不好的做法,但这不是一种错误的做法。它一直都在发生。
但是,我想指出,只要在jQuery包含之后放置$.ready()
函数调用就没关系,因为它总是在DOM准备就绪后运行(其中将在页面加载后发生)。因此,在这种情况下,它没有任何区别。
注意函数调用中的匿名函数。它为匿名函数传递$.ready()
的引用,允许它的函数体稍后执行,因此稍后将调用函数。
<script type="text/javascript">
$(document).ready(function(){
createHeader();
scriptSet();
});
</script>