我可以避免在每个JavaScript文件中放入$(document).ready()调用吗?
Can I avoid putting $(document).ready() calls in each JavaScript file?
所以,简单的问题,是否有可能编写jQuery代码而不编写$(document).ready(function()
在每个。js文件?Js文件包含在<script src="app/jsCode/test.js"></script>
?谢谢你。
只需要在DOM完全加载时执行的代码。即使这样,你也可以使用快捷方式简写:
$(function() {...});
唯一需要在$(document).ready()
块内的Javascript代码是试图立即访问页面的DOM的Javascript代码。如果你有很多其他Javascript(如实用程序函数,库等),只是由其他Javascript调用,那些不需要在$(document).ready()
块,因为他们不尝试访问DOM时,第一次加载。
在我的应用程序/页面中,我倾向于从$(document).ready()
块中调用一些初始化函数,并将其余的代码放在任何块之外,但这对你是否有意义取决于你在做什么以及你的代码是如何组织的。
$(document).ready(function() {
initHeader();
initComments();
})
但是,回答你的问题。所有实际启动将立即访问DOM的操作的javascript必须在$(document).ready()
块中(或类似类型的延迟,直到DOM准备好)。
可以尽量避免$(document).ready
调用。
- 将所有脚本移动到页面底部,这样文档就完全创建了,脚本可以访问整个文档。 你的脚本可以分为:a. Libraries,比如jQuery。b. 实现当前页面功能的脚本。按照依赖关系的顺序放置脚本,并将主应用程序脚本放在序列的末尾。所以你的实际应用脚本可以访问DOM和依赖项。
- 现在,如果有必要,将主脚本包装到
$(document).ready()
调用中。
通常我会这样做,定义一个函数__main__()
,并将其作为ready
处理程序放在我的主脚本main.js
的底部。
// Define your functions
function func1() {
// blah blah blah
}
function func2() {
// implement blah blah blah
}
function __main__() {
// do main intializations
func1(); // call func1 to initialize function point 1
func2(); // call func2 to init other stuff
// blah blah blah
}
$(document).ready(__main__);
该"包装器"的目的是允许浏览器实际创建所有DOM元素,以便在随后评估jQuery选择器时,它们找到需要操作的节点。
这意味着不,这是不可能的,除非你愿意赌你的jQuery不工作——除非你做一些不依赖于DOM的事情(这是不可能的)。
您可以将包装器缩短为
$(function() {
// ...
});
但是这并没有改变什么
可以。
您可以使用一个中央调用.ready()
来初始化所需的代码:
$().ready(function(){
my_class.init();
my_class2.init();
});
你的类可以在单独的外部文件中
你可以这样写:
$(function(){
// do stuff
});
但是,我不确定你是否理解这个习语的意思。这表示"当文档完全加载并且所有DOM节点都可用时,运行此代码"。
如果你正在编写一些不依赖于选择DOM节点或不需要文档完全加载的JS代码,你可以并且通常应该将该代码放在此块之外。例如,如果您正在声明类和对象原型。但是,如果您需要注册事件处理程序或评估选择器,最好等到DOM加载完成。
- jQuery document.ready not working
- jQuery document.ready停止代码
- 停止对document.ready函数的重定向/刷新
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- ASPX Jquery 1.11 $(Document).ready(function() {} was skipped
- 为什么不'加载$(document.ready(function)后,单击“工作”
- 从Document.ready中的bundle执行javascript
- 从 document.ready 调用 jQuery 插件抛出 getPreventDefault 错误
- 调用 Document.ready 外部的 AJAX 函数
- jQuery "$(document).ready(function () {" equivalen
- 尝试触发点击document.ready中Bigcommerce Classic Next主题中的产品选项
- document.ready是在async js之后加载的
- 当在document.ready中使用async=true时会发生什么
- 说明ajax何时在document.ready中调用
- 如何在document.ready(function)时运行隐藏函数和动画
- HTML方法未使用Document Ready加载值
- 超越了在document.ready()中编写简单函数
- Javascript on click事件在函数中不起作用,但在document.ready()中起作用
- 为什么document.ready中的事件处理程序函数有效但无效;取出后不起作用
- 在document.ready jquery上运行ajax请求