2011-08-16 37 views
1

所以我明白,如果我必须把这个代码

$("#MyButton").click(function(){/* code goes here */}); 
在外部.js文件

,我要引用脚本

<script src="MyScript.js" type="text/javascript"></script> 
</body> 

刚刚闭幕body标签(而不是之前头),否则这是行不通的,因为DOM必须MyScript.js

但包括在

我的整个代码之前满载

不知何故,它使所有的工作,即使我现在把脚本放在HEAD(而不是像之前关闭身体标记之前)!

怎么回事?

+0

看看下面的文档:http://api.jquery.com/ready/ –

+0

[jQuery中的jQuery()函数做了什么?](http://stackoverflow.com/questions/ 2114925 /这是什么 - 在jQuery中的jQuery功能) –

回答

6

因为$(f)是快捷方式“执行功能˚F当DOM就绪”

+0

...这是一个很好的做法? –

+0

是的。这可以确保您可以操纵现有的元素。 –

+0

@Ankit:最好使用dom-ready函数将脚本移动到页面的底部,因为它显式地显示了你的意图。您将脚本放在页面底部的唯一原因是出于性能原因。我唯一的建议是你做jQuery(document).ready(function(){...});而不是简写$(function(){...});因为它更清晰。 –

2
$(function(){ }); 

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

同等所以当DOM加载它会被解雇。更多信息here

1

JS执行浏览器遇到的那一刻。如果你把你的脚本放在头部块中,你想要的#Mybutton还没有被加载。就你的脚本而言,#MyButton不存在。

但是,当您执行$(function())...版本时,它会告诉JQuery定义该函数,但不执行直到整个页面DOM已被加载。此时,#MyButton存在,脚本将按预期执行。

在现实世界中,你正试图在面包完成烘焙前做一个三明治。通过使用这种特殊符号,您可以等到面包从烤箱里出来,然后开始涂抹黄油和芥末。

相关问题