JQuery对象和类的封装

jQuery的文档就绪函数:

  1. $(document).ready(function(){
  2. --- jQuery functions go here ----
  3. });

$(function(){…}); 也可以写作 jQuery(function($) {…}); , 其实就是$(document).ready(function{...}); 的简写。

  1. jQuery(function(){
  2. });

or

  1. $(function(){
  2. });

 

这是为了防止文档在完全加载(就绪)之前运行 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)

其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。

相当于

是初始化jquery对象的惯用方法.

通俗点说就是在页面DOM加载完成后(不包括图片下载完成)执行你需要的代码,由于不包括图片下载,所以比window.onload效率高.
不过这个东西,有的时候会使页面跳动,很多JQUERY插件都是在加载完成后,才改变样式的,页面会有跳动或闪动的感觉.比如ui.tab这个插件,页面元素一多,全部显示出来了,它才形成TAB,很晕的说

 

立即执行函数;相当于先申明一个函数,声明完后直接调用; 如果参数如:

相当于:

总结:

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");