我已將所有的JavaScript調用放在jQuery.ready()
之內,以確保在訪問DOM之前完全加載DOM。但是對於函數定義(我自己寫的那些函數定義),放置它們的最佳做法是什麼(在它們的相應調用之前)。在<body>
開頭?或者在<body>
的末尾?或者在jQuery.ready()
裏面?或者它根本無關緊要?謝謝。在文檔中放置javascript函數定義的位置?
回答
不要在ready()函數中放置函數。
你應該在ready調用之上聲明它們,理想情況下,所有的js都在html的底部處理。
謝謝。如果它只是函數**定義**,將它們放置在html的頂部或底部會產生什麼差異? – tamakisquare
腳本元素按文檔順序處理。如果函數聲明在一個腳本元素中,並且調用它們的代碼在另一個腳本元素中,那麼聲明必須在調用函數時加載。 – RobG
@開清 - 爲什麼不在document.ready處理函數中聲明函數?如果它們僅由對方調用,並且其他事件處理程序也在document.ready中設置,那麼這將非常適合將所有內容都保留在全局範圍之外的優勢。當然,任何需要在document.ready處理程序之外的代碼調用的函數也需要在外部聲明。也許你有一個很好的理由說不要這樣做,但除非你解釋它是什麼,否則我們怎麼能知道它... – nnnnnn
如果您將JavaScript放置在正文或正文的頂部,那麼您將需要使用jQuery準備好IF它們依賴於DOM的某些部分。作爲一種快捷方式,你可以通過你的代碼$
,像這樣:
$(function(){
$("#domID").method();
});
然而,你可以把你的腳本在底部放棄整個的混亂。瀏覽器從頂部到底部讀取您的HTML。如果訪問domID
的腳本出現在ID爲domID
的DOM元素下面,那麼它將正常工作。所以上面的代碼片斷可通過以下方式進一步簡化:
$("domID").method();
作爲一個說明,這並非總是如此。我注意到你不能立即訪問畫布元素。使用$
或$.ready
可能會更安全,然後在您更熟悉DOM和JavaScript的加載方式時將其刪除。
- 1. 在CakePHP中放置自定義函數的位置
- 2. 在CouchApp文件夾結構中放置自定義驗證函數的位置?
- 3. 放置自定義數據的位置
- 4. 在Laravel中放置自定義/新類文件的位置?
- 5. 確定定義bash函數的位置
- 6. 找到定義Linux函數的位置
- 7. 找出定義函數的位置
- 8. 放置元素(自定義位置)
- 9. 在MVC 3中放置自定義視圖模板的位置?
- 10. 在django中放置自定義驗證器的位置?
- 11. 將元素放置在Android中的自定義位置
- 12. 把裝置放在自定義插件中的位置?
- 13. 確定函數在C#中的定義位置?
- 14. 在codeigniter目錄中放置javascript文件的位置?
- 15. 將定製函數放在Zend Framework中的位置1.10
- 16. 在角度指令中放置輔助函數的位置?
- 17. 將封裝函數放置在其他腳本中的位置?
- 18. 在express.js中放置常用函數的位置?
- 19. 在Code Igniter中放置通用函數的位置?
- 20. 放置在綁定事件處理函數中時未定義的函數
- 21. 我的自定義函數在Wordpress中的位置?
- 22. 在NSView中放置位置
- 23. Autodesk Inventor將零件放置在用戶定義的位置
- 24. 如何將窗口放置在Android上的自定義位置?
- 25. 如何在給定的文檔中找到字符串的位置或位置
- 26. VIM自定義函數的定義/位置
- 27. 在C++中將默認值參數放置在變長函數中的位置?
- 28. 定義cpp文件位置
- 29. 在Javascript中獲取關於NodeList對象的文檔的位置?
- 30. 將數據集文件放置在gnuplot中的位置
_「在它們相應的調用之前」 - 實際上,在相同的腳本元素或相同的函數範圍內,您的函數聲明不必在被調用之前進行,因爲函數聲明是「懸掛的」,即JS解釋器將它們當作是在塊的開始處聲明的。 – nnnnnn
@nnnnnn - 這是一個有用的信息。作爲js的新手,我非常欣賞這樣的知識。謝謝! – tamakisquare