为什么我的jquery没有$(function(){在头部?

时间:2015-10-19 20:42:51

标签: jquery

我将我的js文件放在head标记内。

所以我这样做:

<html>
<head>
<script>
    $(function() { //need this to work. Why?
        $(".nc").click(function(){
            alert("ok");
         });
     });
</script>
</head>
<body>
<span class="nc">click</span>
</body>
</html>

我的问题是,人们说使用$(function(){是错误的,但是如果我删除它就行不通。我该怎么办?

http://jsfiddle.net/v2hrb4kg/

3 个答案:

答案 0 :(得分:1)

回答这个问题:“为什么我的jquery不能在没有$(function(){in head?”的情况下工作?

它不起作用,因为$(function(){是$(document).ready()的快捷方式{基本上说“一旦我的所有HTML都完全加载,然后运行这个脚本”。没有$ (function(){,你的脚本尝试在加载后立即运行。由于它位于文档的头部,它会尝试在你的元素与class =“nc”之前运行。它不能将事件处理程序附加到元素那么将它包装在$(function(){中,只要你的脚本出现在加载jquery的脚本标记之后,即使它位于文档的头部,它也可以工作。

据说,最好的做法是将尽可能多的javascript加载到页面底部以改善加载时间,尤其是在无论如何加载DOM之前您不打算运行的脚本。

答案 1 :(得分:0)

$(function(){ ... });

没错。它是一个JQuery快捷方式。你需要它,你应该把你的JS放在脚本标签中。

答案 2 :(得分:0)

它有两种方式,你的意思是jQuery快捷方式,但你也可以使用它:

$( document ).ready(function() {
  // some code
});

您忘记使用<script>标记,但通常将您的JS放在<body>的末尾。