1.首先说JQuery的几个写法 

$(function(){
      //do someting
   });
   $(document).ready(function(){
      //do someting
   });
   $().ready(function(){
    //do someting
  })

这三种方法都是JQuery的方法,写法不一样,但是效果一样。

 2.这三个写法和$(window).load(function(){...})、onload()的区别

2.1.加载多个函数的问题

  <body onload="a();b();">
  </body>
  在Onload事件中只能这样加载,很丑陋…而在JQuery中你可以利用多个JQuery.Ready()方法,它们会按次序依次执行

2.2代码和内容不分离
      这个貌似不用说了,让人深恶痛绝-.-!!

3.3执行先后顺序不同
            对于Body.Onload事件,是在加载完所有页面内容才会触发,我的意思是所有内容,包括图片,flash等.如果页面的这些内容很多会让用户等待很长时间.
       而对于$(document).ready()方法,这个方法只是在页面所有的DOM加载完毕后就会触发,无疑很大的加快了网页的速度.
       但是对于一些特殊应用,比如图片的放大缩小,图片的剪裁。需要网页所有的内容加载完毕后才执行的呢?我推荐使用$(window).load()方法,这个方法会等
       到页面所有内容加载完毕后才会触发,并且同时又没有OnLoad事件的弊端.

3.(function($){})(jQuery)

(function() {
      alert("hi");//不一定在dom加载完执行,所以要操作dom对象时需要注意
  })(jQuery)

3.1首先(function(){})()这种写法 是创建了一个匿名的方法并立即执行(function(){})这个是匿名方法后面的括号就是立即调用了这个方法)。这样做可以创建一个作用域以保证内部变量与外部变量不发生冲突,比如$ jQuery 等jquery内部定义的变量。

3.2 (function($){})(jQuery) 这个写法主要的作用还是保证jquery不与其他类库或变量有冲突 首先是要保证jQuery这个变量名与外部没有冲突(jquery内部$与jQuery是同一个东西 有两个名字的原因就是怕$与其他变量名有冲突二jQuery与其他变量冲突的几率非常小)并传入匿名对象,匿名对象给参数起名叫做$(其实和jquery内部是一样的) 然后你就可以自由的在(function($){})(jQuery)里写你的插件而不需要考虑与外界变量是否存在冲突。

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<script type="text/javascript" src="jquery-1.7.2.min.js" charset="utf-8" ></script>
</HEAD>
<BODY onload="alert('onload')">
<script type="text/javascript" charset="utf-8" > $(function(){
alert("$(function()");
});
$(document).ready(function(){
alert("$(document).ready");
});
$().ready(function(){
alert("$().ready(function()");
})
//上面三个方法是级别是一样的,按代码的先后顺利执行,是在dom对象加载完 $(window).load(function() {
alert("$(window).load(function()");//是在图片,flash等加载完执行
}); (function() {
alert("hi");//不一定在dom加载完执行,所以要操作dom对象时需要注意
})(jQuery) //弹出先后顺利是:hi-> $(function() -> $(document).ready -> $().ready(function() -> onload -> $(window).load(function()
</script> </BODY>
</HTML>

<转载自:http://www.cnblogs.com/allensoft/archive/2014/04/10/3656202.html>

随机推荐

  1. Bzoj1823 [JSOI2010]满汉全席

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1640  Solved: 798 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的 ...

  2. OrCAD Capture使用记录

    1.安装 ①修改host_ID为主机名称(如果填不对,安装过程会提示你再填一次):其后跟的是机子的MAC地址,用ipconfig /all 可以查看. ②下一行的FLEMlm,后面跟的是文件cdslm ...

  3. js调用刷新

    _self.fireEvent('refresh');

  4. C#把数据写到硬盘指定位置

    FileStream fs; StreamWriter sw;string RootPath = @"C:\Advantech" + "\\tempData\\" ...

  5. Swift 函数做参数和闭包做参数的一个细节差别

    函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...

  6. JS 复制对象

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...

  7. jQuery知识点总结(第六天)

    今天工作繁忙,晚上又和所谓的'朋友',吃了自助烧烤. 但我内心是很抗拒的,不知为了什么,竟然稀奇古怪的答应了下来,竟要去吃饭.我向来不喜欢去凑热闹,特别是和志趣不投的人在一起吃,对方所说的话,自己根本 ...

  8. java编程思想-java中的并发(二)

    二.共享受限资源 有了并发就可以同时做多件事情了.但是,两个或多个线程彼此互相干涉的问题也就出现了.如果不防范这种冲突,就可能发生两个线程同时试图访问同一个银行账户,或向同一个打印机打印,改变同一个值 ...

  9. scrapy2_初窥Scrapy

    递归知识:oop,xpath,jsp,items,pipline等专业网络知识,初级水平并不是很scrapy,可以从简单模块自己写. 初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构性数 ...

  10. C++ Scripting

    http://www.quepublishing.com/articles/article.aspx?p=26069