2015-10-19 66 views
-5

我把里面head标签我的js文件

所以我做这样的事情:

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

我的问题是,人们说它是错误的使用$(函数(){但如果我删除此不工作,我应该怎么办?

http://jsfiddle.net/v2hrb4kg/

+0

http://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the –

+1

为什么使用错误? '$(function(){});'只是'$(document).ready(function(){});'的快捷方式。 – kosmos

+0

或者只是将您的JavaScript代码移动到页面末尾...... – Hackerman

回答

1

要回答这个问题:“为什么我的jQuery不是没有工作,$(函数(){头”

它不会起作用,因为$(函数(){是$快捷方式(文件) .ready(){基本上说“一旦所有的HTML都完全加载完毕,然后运行这个脚本”。没有$(function(){,你的脚本会尽快运行,因为它在该文件试图在class =“nc”的元素之前运行,它不能将一个事件处理程序附加到一个尚不存在的元素,所以将它包装在$(function(){允许它工作,即使只要脚本出现在加载jquery的脚本标签之后,它就在文档头部。

这是说,它被认为是最好的做法,尽可能多的JavaScript加载到您的网页的底部,以改善加载时间,尤其是脚本,你不打算运行,直到DOM加载无论如何。

+0

非常感谢! –

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

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

0

两种方式都可以,那你的意思是一个jQuery的快捷方式,但你也可以使用这个:

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

你忘了使用<script>标签,但它是常见的,你把你的JS在<body>结束。