我已将所有的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. 在Symfony Encore中放置tsconfig.json以定义TypeScript配置的位置?
- 7. 在MVC3中放置自定义配置文件提供程序的位置
- 8. 找到定义Linux函数的位置
- 9. 找出定义函数的位置
- 10. 放置元素(自定义位置)
- 11. 在CakePHP 3中放置自定义PHP类的位置?
- 12. 将元素放置在Android中的自定义位置
- 13. 在Symfony2中放置自定义初始化代码的位置?
- 14. 在MVC 3中放置自定义视图模板的位置?
- 15. 在django中放置自定义验证器的位置?
- 16. 把装置放在自定义插件中的位置?
- 17. PostgreSQL,放置自定义函数
- 18. 确定函数在C#中的定义位置?
- 19. 在codeigniter目录中放置javascript文件的位置?
- 20. 将文本放在自定义位置的UIView中
- 21. 将定制函数放在Zend Framework中的位置1.10
- 22. 将封装函数放置在其他脚本中的位置?
- 23. 在express.js中放置常用函数的位置?
- 24. 在Code Igniter中放置通用函数的位置?
- 25. 在角度指令中放置辅助函数的位置?
- 26. 放置在绑定事件处理函数中时未定义的函数
- 27. 我的自定义函数在Wordpress中的位置?
- 28. 在NSView中放置位置
- 29. 未在HTML文档中定义JavaScript函数,为什么不呢?
- 30. datePickerValueChanged文档位置?
_“在它们相应的调用之前” - 实际上,在相同的脚本元素或相同的函数范围内,您的函数声明不必在被调用之前进行,因为函数声明是“悬挂的”,即JS解释器将它们当作是在块的开始处声明的。 – nnnnnn
@nnnnnn - 这是一个有用的信息。作为js的新手,我非常欣赏这样的知识。谢谢! – tamakisquare