2011-12-01 37 views
0

我已将所有的JavaScript调用放在jQuery.ready()之内,以确保在访问DOM之前完全加载DOM。但是对于函数定义(我自己写的那些函数定义),放置它们的最佳做法是什么(在它们的相应调用之前)。在<body>开头?或者在<body>的末尾?或者在jQuery.ready()里面?或者它根本无关紧要?谢谢。在文档中放置javascript函数定义的位置?

+1

_“在它们相应的调用之前” - 实际上,在相同的脚本元素或相同的函数范围内,您的函数声明不必在被调用之前进行,因为函数声明是“悬挂的”,即JS解释器将它们当作是在块的开始处声明的。 – nnnnnn

+0

@nnnnnn - 这是一个有用的信息。作为js的新手,我非常欣赏这样的知识。谢谢! – tamakisquare

回答

0

不要在ready()函数中放置函数。

你应该在ready调用之上声明它们,理想情况下,所有的js都在html的底部处理。

+0

谢谢。如果它只是函数**定义**,将它们放置在html的顶部或底部会产生什么差异? – tamakisquare

+1

脚本元素按文档顺序处理。如果函数声明在一个脚本元素中,并且调用它们的代码在另一个脚本元素中,那么声明必须在调用函数时加载。 – RobG

+1

@开清 - 为什么不在document.ready处理函数中声明函数?如果它们仅由对方调用,并且其他事件处理程序也在document.ready中设置,那么这将非常适合将所有内容都保留在全局范围之外的优势。当然,任何需要在document.ready处理程序之外的代码调用的函数也需要在外部声明。也许你有一个很好的理由说不要这样做,但除非你解释它是什么,否则我们怎么能知道它... – nnnnnn

0

如果您将JavaScript放置在正文或正文的顶部,那么您将需要使用jQuery准备好IF它们依赖于DOM的某些部分。作为一种快捷方式,你可以通过你的代码$,像这样:

$(function(){ 

    $("#domID").method(); 
}); 

然而,你可以把你的脚本在底部放弃整个的混乱。浏览器从顶部到底部读取您的HTML。如果访问domID的脚本出现在ID为domID的DOM元素下面,那么它将正常工作。所以上面的代码片断可通过以下方式进一步简化:

$("domID").method(); 

作为一个说明,这并非总是如此。我注意到你不能立即访问画布元素。使用$$.ready可能会更安全,然后在您更熟悉DOM和JavaScript的加载方式时将其删除。

相关问题