jQuery的文档就绪函数:
$(document).ready(function(){
--- jQuery functions go here ----
});
$(function(){…});
也可以写作
jQuery(function($) {…});
, 其实就是
$(document).ready(function{…});
的简写。
jQuery(function(){
});
or
$(function(){
});
这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码。
如果在文档没有完全加载之前就运行函数,操作可能失败。下面是两个具体的例子:
-
试图隐藏一个不存在的元素
-
获得未完全加载的图像的大小
$(document).ready() 和JavaScript window.onload的区别:
两者都是指页面加载完成后,执行函数里的内容, $(document).ready() 是指DOM加载完成后就可以执行,JavaScript window.onload 不仅仅指DOM加载完成,还包括图片等外部资源完全加载后才能执行。
区别:
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行,$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕
window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个,$(document).ready()可以同时编写多个,并且都可以得到执行
window.onload没有简化写法,$(document).ready(function(){})可以简写成$(function(){})
(function($) {})(jQuery)
(function(){ })(jQuery);
其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。
相当于
function aa($){} aa(jQuery)
是初始化jquery对象的惯用方法.
通俗点说就是在页面DOM加载完成后(不包括图片下载完成)执行你需要的代码,由于不包括图片下载,所以比window.onload效率高.
不过这个东西,有的时候会使页面跳动,很多JQUERY插件都是在加载完成后,才改变样式的,页面会有跳动或闪动的感觉.比如ui.tab这个插件,页面元素一多,全部显示出来了,它才形成TAB,很晕的说
(function(){})();
立即执行函数
;相当于先申明一个函数,声明完后直接调用;
如果参数如:
(function(str){alert(str)})("output"));
相当于:
function OutPutFun(str){alert(str);};OutPutFun("output");
总结:
1. $(function(){ }) 或 jQuery(function(){ })
此函数也可以写成 jQuery(function(){ }),
用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在
。不可用于存放开发插件的代码,因为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。
2.
(function($){…})() 或 (function($){…})(jQuery)
此函数也可以写成(function(){ })(jQuery);其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。
用于存放开发插件的代码,执行其中代码时DOM不一定存在
,所以若要直接自动执行DOM操作的代码请小心使用。它相当于:
function wido($){} ; wisdo(jQuery), 是初始化jquery对象的惯用方法.
3.
(function(){})() 或 (function(){ })(jQuery)
可以理解为
闭包,是一个匿名方法的调用,以保证方法内的变量不与外界冲突,
它等效于匿名函数 function(arg){…} ,参数为 arg,是
初始化jquery对象的惯用方法
,有的时候会使页面跳动, 在调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){…})(param),这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数,而(function($){…})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery,
例如:
(funtion(str){alert(str)})(“output”));
相当于:
funtion OutPutFun(str){alert(str);};
OutPutFun(“output”);
参考文档:
jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别