2012-09-16 69 views
0

這是一個簡單的HTML文件:的方法,以避免包括的js文件兩次

<!DOCTYPE html> 
<html> 
    <head> 
<title>Test Uploading Func.</title> 
<script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
<script type="text/javascript" charset="utf-8" src="jquery-1.7.2.js">     </script>   
<link type="text/css" href="jquery-ui-1.8.21.custom.css" rel="Stylesheet" /> 
    <script type="text/javascript" src="jquery-ui-1.8.21.custom.min.js"></script> 

     <!--Include js file--> 
     <script type="text/javascript" src="upload.js" ></script> 
</head> 
<body> 
    <button id="Upload" value="upload">upload</button>  
    <script type="text/javascript" src="upload.js" ></script> 
</body> 

這是js文件我想包括:

$('#Upload').bind('click', function(){ 
alert(">"); 
}); 

如果我只是在開始包含js文件時,選擇器#不能知道編號上傳這樣我就必須再次包含它 在文件末尾......我知道這是不正確的。但我不知道如何解決它?難道我們不只是在標籤頭部內包含所有js文件? 我展示的適合的編碼風格是什麼? 謝謝。

更新問題!!!

如果我有很多這樣的情況,我應該添加「$(document).ready()」到所有的函數嗎?有點奇怪... 還有另一種方法嗎?或者Web開發人員總是這樣做。

我應該在哪裏包含我的js文件?在開始還是結束?

如果我將它們都包含在最後,則不會出現此類問題。 那麼爲什麼很多人只是在開始時包含js文件呢?

回答

2

等待DOM是ready選擇元素之前:

$(document).ready(function() { 
    $('#Upload').bind('click', function(){ 
     alert(">"); 
    }); 
}); 

更新:

你應該總是使用$(document).ready(...)我如果您正在操作代碼運行時期望在頁面上的元素,如果您的代碼位於文檔的<head></head>中,這一點尤其重要。

你是不是需要使用$(document).ready(...)如果你的代碼是</body>標籤內,但要知道,有differences between the two

+0

請檢查我的帖子的更新問題。 – Stallman

+0

@Stallman:我更新了我的答案,我希望有所幫助。讓我知道你是否需要更多的澄清 –

+0

你的意思是我們應該總是在js文件中使用$(document).ready(...) ,包括標籤頭內的文件嗎? – Stallman

1

爲什麼不檢查$(document).ready()只有一次包括:

$(document).ready(function() { 
    $('#Upload').bind('click', function(){ 
     alert(">"); 
    }); 
}); 
0

如果你使用jQuery,你應該總是把它放在
$(document).ready(function(){ ... code here ... });

$(function(){ ... code here ... })
如果你如果已經沒有加載你reffering元素不知道。通過這種方式,你可以確定,一切都會按照你的期望工作。這個功能還有另一個問題,但這是最重要的。

+0

我明白了。謝謝。 – Stallman

1

通常認爲更好的做法是將所有腳本放在身體標籤的底部。我唯一不通常是需要像HTML5 shiv或某些分析腳本那樣處於頂端的專門腳本。

這樣做的主要原因是腳本解釋暫停了HTML/CSS渲染,它實際上可以減少感知的加載時間性能。

副作用是,您通常不必爲DOM準​​備好的事件感到困擾,因爲當您的腳本在引用的元素下面觸發時,您可以確定HTML已經「準備就緒」。