此代码:
<script type="text/javascript">
someMethod1();
$(function () {
someMethod2();
});
</script>
这两次召唤有什么区别?我们何时进行第一次通话,何时进行第二次通话?方法执行的顺序是什么?
答案 0 :(得分:3)
someMethod1();
可以在文档准备好之前或之后调用它,它不需要jQuery。如果这是在你的页面的末尾,它将在所有控件都准备就绪时被调用,但如果它在中间,那么它将只知道被渲染的控件。
$(function () {
someMethod2();
});
这是在文档准备好并且所有控件都准备好/呈现后始终调用。这需要jQuery。您可以阅读有关就绪here的更多信息。这也有助于您了解其他函数调用。
答案 1 :(得分:2)
someMethod1立即执行
someMethod2等待整个页面加载, 包括外部javascript文件(其他脚本,或来自其他网站),CSS 执行代码之前的其他资源。
$(function () {
//run after page loads
});
方法2有时会以
的形式出现$(document).ready(function() {
// Handler for .ready() called.
});
了解更多信息:http://api.jquery.com/ready/
答案 2 :(得分:1)
脚本块中的语句按它们发生的顺序执行。如果我们对这些行进行编号并插入一两个额外的换行符,以便更容易讨论:
1 someMethod1();
2
3 $(
4 function () {
5 someMethod2();
6 }
7 );
第1行,首先执行someMethod1()
。
然后执行第3行$()
,其中$()
的参数是在第4到6行定义的匿名函数。$()
函数调度匿名函数稍后执行响应文档就绪事件。也就是说,那时不执行匿名函数。
最后,当文档准备就绪时,执行第4到第6行的匿名函数,这意味着第5行someMethod2()
出现。