JQuery $ function()会触发什么事件?

我们有一个JQuery $(function()语句:

 <script type="text/javascript"> $(function(){ //Code.. }) </script> 

愚蠢的问题 – 什么时候该函数执行? 整个HTML页面是由客户端下载的吗?

$(function()中使用包装代码的好处,而不仅仅是做:

 <script type="text/javascript"> //Code.. </script> 

只要DOM被parsing,它就会被执行,并且如果有多个外观,则按照外观的顺序被调用。 此时文档不显示,只是parsing。

它在文档被parsing并准备就绪时触发,相当于$(document).ready(function () { })

显而易见的好处是,在页面上的其他元素之前添加脚本标记意味着脚本可以与它们交互,即使它们在parsing时不可用。 如果在parsing元素之前运行脚本,并且文档尚未准备好,则它们将不可用于交互。

文档完成加载时。 这和写这个是一样的:

 $(document).ready(function(){}); 

编辑:要回答你的第二个问题:

如果你没有把代码包装在上面的代码块中,那么只要遇到它,它就会触发,而不是在页面上的所有控件加载之后。 因此,如果块位于页面的顶部,并且引用了页面中的元素,那么这些引用将不起作用,因为元素尚未加载。

但是,如果你包装在块中,那么你知道该页面已经加载,所有的元素可供参考。

它在文档完全加载之后触发,DOM树已经初始化,所有CSS样式已经被应用,并且所有的Javascript已经被执行。 它与load事件的不同之处在于,从其他URL(如图像或Flash文件)加载其内容的元素(除CSS / JS之外)不一定在此时完成加载。 这通常被称为“domready”或“domloaded”事件,一些现代浏览器直接支持它(例如,Firefox有一个DomContentLoaded事件),在其他人可以用各种技巧模拟,如使用defer属性或放置脚本在身体的最后。

这样做的好处是可以可靠地与文档进行交互。 例如,您可以在具有特定ID的元素上设置事件处理程序,并确保它已经存在于DOM树中。 另一方面,如果某些外部资源加载缓慢,则可以比加载事件早运行。 如果你的脚本在你的HTML代码的末尾,那么在使用或不使用domready事件上可能没有什么区别,但是通常脚本是从head标记中调用的,并且在这一点上没有任何元素可用。