2011-08-16 81 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存在,腳本將按預期執行。

在現實世界中,你正試圖在麪包完成烘焙前做一個三明治。通過使用這種特殊符號,您可以等到麪包從烤箱裏出來,然後開始塗抹黃油和芥末。

相關問題