<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_钢铁人生</title><subtitle type="text">走自己的路，让别人去说吧。穿别人的鞋，让他们去找鞋吧。</subtitle><id>http://feed.cnblogs.com/blog/u/28623/rss</id><updated>2012-03-27T03:02:51Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/28623/rss"/><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/29/2372868.html</id><title type="text">从零开始学习jQuery (十) jQueryUI常用功能实战</title><summary type="text">一.摘要本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍.本文是实战篇. 使用jQueryUI完成制作网站的大部分常用功能.二.前言经过公司内部收集, 整理了一些经常使用javascript实现的功能. 实现这些功能的主角不是让人眼花缭乱的jQuery插件, 而是jQuery UI.如果你还在为了一个小小的特效而去下载并安装插件, 发现Bug还没有人替你解决. 记住插件是我们没有办法的最后选择.使用插件有太多的坏处:1.不利于维护2.增加页面大小3.不利于成员间交流共享,具有学习成本.4.不够健壮, 不能保</summary><published>2012-02-29T02:05:00Z</published><updated>2012-02-29T02:05:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/29/2372868.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/29/2372868.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,&amp;nbsp; 即使你会使用jQuery也能在阅读中发现些许秘籍.&lt;/p&gt;&lt;p&gt;本文是实战篇. 使用jQueryUI完成制作网站的大部分常用功能.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;经过公司内部收集, 整理了一些经常使用javascript实现的功能.&amp;nbsp; 实现这些功能的主角不是让人眼花缭乱的jQuery插件,&amp;nbsp; 而是jQuery UI.&lt;/p&gt;&lt;p&gt;如果你还在为了一个小小的特效而去下载并安装插件, 发现Bug还没有人替你解决. 记住插件是我们没有办法的最后选择.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用插件有太多的坏处:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.不利于维护&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.增加页面大小&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.不利于成员间交流共享,具有学习成本.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.不够健壮, 不能保证插件版本一直更新并修复所有问题.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面就引入今天的主角:jQuery UI&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.jQuery UI&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery UI 是 jQuery 的一部分, 是在jQuery之上的一套专门用于UI交互的类库.&amp;nbsp; 使用jQuery UI可以实现底层交互, 各种高级特效, 动画, 并且可定制主题.&lt;/p&gt;&lt;p&gt;我们可以用它轻松的构建高度交互的Web应用程序.&lt;/p&gt;&lt;p&gt;官方首页:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="http://jqueryui.org/" href="http://jqueryui.org/"&gt;http://jqueryui.org/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;下载:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="http://jqueryui.com/download" href="http://jqueryui.com/download"&gt;http://jqueryui.com/download&lt;/a&gt;&lt;/p&gt;&lt;p&gt;示例和文档:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="http://jqueryui.com/demos/" href="http://jqueryui.com/demos/"&gt;http://jqueryui.com/demos/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;皮肤:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a title="http://jqueryui.com/themeroller/" href="http://jqueryui.com/themeroller/"&gt;http://jqueryui.com/themeroller/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;jQuery UI 的在线网站十分强大. 首先就是在下载时可以组装自己想要的功能定制下载:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_14.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_6.png" alt="image" width="644" height="438" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;并且针对各种控件不仅提供了详细的参数说明和实例,&amp;nbsp; 还可以随时更换实例的皮肤:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_16.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_7.png" alt="image" width="627" height="484" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;本文主要讲解实例, 大家可以通过实例代码快速上手jQuery UI.&amp;nbsp; 使用jQuery UI我们可以再不借助其他插件的情况下完成大部分页面应用, 说其是一个官方的超级UI插件也不为过. 包含所有功能的jQuery UI类库文件为188K, 启用Gzip压缩后是45K. 虽然较大但是一次加载全网站获益.而且45K大小在当今的互谅网时代还算可以接受.&lt;/p&gt;&lt;p&gt;目前还没有jQuery UI的中文教程.&amp;nbsp; 因为本文是实战篇, 所以不会仔细讲解基础内容. 在后面的章节中我会加入jQuery UI的基础教程.争取成为中文jQuery UI第一教程.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四. 准备工作&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我将所有相关的文件, 包括各种类库文件, Theme模板放置在如下路径:&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.dotnetapi.com/JSLib/" href="http://www.dotnetapi.com/JSLib/"&gt;http://www.dotnetapi.com/JSLib/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;此路径开通了目录浏览, 可以直接查找需要的文件. 目录组织结构按照本系列: &lt;a href="http://www.cnblogs.com/zhangziqiu/archive/2009/05/12/jQuery-Learn-8.html"&gt;(八) 插播:jQuery实施方案&lt;/a&gt; 中介绍的方案组织.&lt;/p&gt;&lt;p&gt;另外也可以从Google上引用文件, Google的CDN速度更快也更有保证, 参见: &lt;a href="http://code.google.com/apis/ajaxlibs/documentation/index.html#jqueryUI"&gt;Google's CDN&lt;/a&gt;&lt;/p&gt;&lt;p&gt;本文的实例的所有引用都使用 WebConfig.ResourceServer 这个属性:&lt;/p&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebConfig&lt;br/&gt;{&lt;br/&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ResourceServer = &lt;span class="str"&gt;@"http://www.dotnetapi.com/&lt;/span&gt;";}&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五.弹出层对话框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;弹出框是最常用最实用的功能.&amp;nbsp; 先来看一下艺龙网上的一些应用场景.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 艺龙网应用场景举例&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1) 静态提示类弹出层. 弹出层的内容是固定的.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_18.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_8.png" alt="image" width="280" height="203" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) 动态提示类弹出层. 弹出层内容是根据事件源变化的.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_2.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb.png" alt="image" width="387" height="220" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(3)遮罩类弹出层. 弹出时背景变灰并不可点击.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_6.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_2.png" alt="image" width="627" height="487" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 应用实例&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 jQuery UI 的 Dialog 组件. 我以轻松实现上面三种效果.&lt;/p&gt;&lt;p&gt;Dialog组件的主要特点是可以拖动(&lt;a href="http://jqueryui.com/demos/draggable"&gt;Draggable&lt;/a&gt;), 可以改变大小(&lt;a href="http://jqueryui.com/demos/resizable"&gt;Resizable&lt;/a&gt;) .&lt;/p&gt;&lt;p&gt;示例完整代码如下:&lt;/p&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#" %&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="Head1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery UI - 弹出层应用实例 Dialog&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;   &lt;br/&gt;    &lt;span class="rem"&gt;&amp;lt;!--black-tie,blitzer,blitzer,dot-luv,excite-bike,hot-sneaks,humanity,mint-choc,redmond,smoothness,south-street,start,swanky-purse,trontastic,ui-darkness,ui-lightness,vader--&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%=WebConfig.ResourceServer +"&lt;/span&gt;/&lt;span class="attr"&gt;JsLib&lt;/span&gt;/&lt;span class="attr"&gt;jquery&lt;/span&gt;/&lt;span class="attr"&gt;themes&lt;/span&gt;/&lt;span class="attr"&gt;redmond&lt;/span&gt;/&lt;span class="attr"&gt;style&lt;/span&gt;.&lt;span class="attr"&gt;css&lt;/span&gt;&lt;span class="kwrd"&gt;"%&amp;gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;% =WebConfig.ResourceServer %&amp;gt;/JsLib/jquery/jquery-min-lastest.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br/&gt;    &amp;lt;script src=&lt;span class="str"&gt;"&amp;lt;% =WebConfig.ResourceServer %&amp;gt;/JsLib/jquery/ui/jquery-ui-all-min-lastest.js"&lt;/span&gt;&lt;br/&gt;        type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;    &amp;lt;% &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;false&lt;/span&gt;)&lt;br/&gt;       {%&amp;gt;&amp;lt;script src=&lt;span class="str"&gt;"~/js/jquery-vsdoc-lastest.js"&lt;/span&gt; type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;    &amp;lt;% }%&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*========== 必须放在头部加载的语句块. 尽量避免使用 ==========*/&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;style type=&lt;span class="str"&gt;"text/css"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;/style&amp;gt;&lt;br/&gt;&amp;lt;/head&amp;gt;&lt;br/&gt;&amp;lt;body&amp;gt;&lt;br/&gt;    &amp;lt;!-- Demo 静态提示类弹出层 --&amp;gt;&lt;br/&gt;    &amp;lt;div &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"ui-widget ui-widget-content ui-corner-all"&lt;/span&gt; style=&lt;span class="str"&gt;"width: 700px; padding: 5px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;h3&amp;gt;Demo. 共享同一个静态弹出层, 弹出层内容固定: &amp;lt;/h3&amp;gt;&lt;br/&gt;        &amp;lt;div&amp;gt;&lt;br/&gt;            &amp;lt;span id=&lt;span class="str"&gt;"spanShowTip1"&lt;/span&gt;&amp;gt;显示提示&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span id=&lt;span class="str"&gt;"spanShowTip2"&lt;/span&gt;&amp;gt;显示提示&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br/&gt;            &amp;lt;span id=&lt;span class="str"&gt;"spanShowTip3"&lt;/span&gt;&amp;gt;显示提示&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span id=&lt;span class="str"&gt;"spanShowTip4"&lt;/span&gt;&amp;gt;显示提示&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;!-- Demo 动态提示类弹出层 --&amp;gt;&lt;br/&gt;    &amp;lt;div &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"ui-widget ui-widget-content ui-corner-all"&lt;/span&gt; style=&lt;span class="str"&gt;"width: 700px; padding: 5px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;h3&amp;gt;Demo. 每个弹出层内容不同, 弹出层内容存储在事件源的元素属性中: &amp;lt;/h3&amp;gt;&lt;br/&gt;        &amp;lt;div&amp;gt;&lt;br/&gt;            &amp;lt;span id=&lt;span class="str"&gt;"spanShowDataTip1"&lt;/span&gt; data=&lt;span class="str"&gt;"颜色是红色"&lt;/span&gt;&amp;gt;红色&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br/&gt;            &amp;lt;span id=&lt;span class="str"&gt;"spanShowDataTip2"&lt;/span&gt; data=&lt;span class="str"&gt;"颜色是绿色"&lt;/span&gt;&amp;gt;绿色&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;!-- Demo 遮罩类弹出层 --&amp;gt;&lt;br/&gt;    &amp;lt;div &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"ui-widget ui-widget-content ui-corner-all"&lt;/span&gt; style=&lt;span class="str"&gt;"width: 700px; padding: 5px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;h3&amp;gt;Demo. 弹出IFrame &amp;lt;/h3&amp;gt;&lt;br/&gt;        &amp;lt;div&amp;gt;&lt;br/&gt;            &amp;lt;input type=&lt;span class="str"&gt;"button"&lt;/span&gt; id=&lt;span class="str"&gt;"btnShowIframe"&lt;/span&gt; name=&lt;span class="str"&gt;"btnShowIframe"&lt;/span&gt; value=&lt;span class="str"&gt;"显示弹出层"&lt;/span&gt;/&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &lt;br/&gt;    &amp;lt;!-- 提示类弹出层 --&amp;gt;&lt;br/&gt;    &amp;lt;div id=&lt;span class="str"&gt;"divTip"&lt;/span&gt; title=&lt;span class="str"&gt;"自定义标题"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;p&amp;gt;弹出层&amp;lt;/p&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;!-- 遮罩类弹出层 --&amp;gt;&lt;br/&gt;    &amp;lt;div id=&lt;span class="str"&gt;"divIframe"&lt;/span&gt; title=&lt;span class="str"&gt;"iFrame弹出层"&lt;/span&gt; style=&lt;span class="str"&gt;"text-align:center;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;iframe src=&lt;span class="str"&gt;"http://www.elong.com"&lt;/span&gt; width=&lt;span class="str"&gt;"450px"&lt;/span&gt; height=&lt;span class="str"&gt;"230px"&lt;/span&gt;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========用户自定义方法==========*/&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========事件绑定==========*/&lt;/span&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="rem"&gt;//静态提示类弹出层&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"span[id^=spanShowTip]"&lt;/span&gt;).css(&lt;span class="str"&gt;"cursor"&lt;/span&gt;, &lt;span class="str"&gt;"pointer"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"*"&lt;/span&gt;).stop();&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.stopPropagation();&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; top = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset().top + 20;&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; left = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset().left;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"option"&lt;/span&gt;, &lt;span class="str"&gt;"position"&lt;/span&gt;, [left, top]);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"open"&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;            &lt;span class="rem"&gt;//动态提出类弹出层&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"span[id^=spanShowDataTip]"&lt;/span&gt;).css(&lt;span class="str"&gt;"cursor"&lt;/span&gt;, &lt;span class="str"&gt;"pointer"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"*"&lt;/span&gt;).stop();&lt;br/&gt;                $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"close"&lt;/span&gt;);&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.stopPropagation();&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; top = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset().top + 20;&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; left = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset().left;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).html($(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).attr(&lt;span class="str"&gt;"data"&lt;/span&gt;));&lt;br/&gt;                $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"option"&lt;/span&gt;, &lt;span class="str"&gt;"position"&lt;/span&gt;, [left, top]);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"open"&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;            &lt;span class="rem"&gt;//遮罩类弹出层&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnShowIframe"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.preventDefault();&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.stopPropagation();&lt;br/&gt;                $(&lt;span class="str"&gt;"#divIframe"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"open"&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            &lt;span class="rem"&gt;//单击自身取消冒泡&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#divTip, #divIframe"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.stopPropagation();&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            &lt;span class="rem"&gt;//document对象单击隐藏所有弹出层&lt;/span&gt;&lt;br/&gt;            $(document).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"close"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divIframe"&lt;/span&gt;).dialog(&lt;span class="str"&gt;"close"&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;        });&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========加载时执行的语句==========*/&lt;/span&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;        &lt;br/&gt;            &lt;span class="rem"&gt;//初始化提示类弹出层&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#divTip"&lt;/span&gt;).dialog({&lt;br/&gt;                show: &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br/&gt;                bgiframe: &lt;span class="kwrd"&gt;false&lt;/span&gt;,&lt;br/&gt;                autoOpen: &lt;span class="kwrd"&gt;false&lt;/span&gt;&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            &lt;span class="rem"&gt;//初始化遮罩类弹出层&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#divIframe"&lt;/span&gt;).dialog({&lt;br/&gt;                show: &lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;br/&gt;                bgiframe: &lt;span class="kwrd"&gt;false&lt;/span&gt;,&lt;br/&gt;                autoOpen: &lt;span class="kwrd"&gt;false&lt;/span&gt;,&lt;br/&gt;                width: 500,&lt;br/&gt;                height: 300,&lt;br/&gt;                draggable: &lt;span class="kwrd"&gt;true&lt;/span&gt;,                &lt;br/&gt;                resizable: &lt;span class="kwrd"&gt;false&lt;/span&gt;,&lt;br/&gt;                modal: &lt;span class="kwrd"&gt;true&lt;/span&gt;&lt;br/&gt;            });            &lt;br/&gt;        });&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;效果如图:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;静态提示类弹出层&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_22.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_10.png" alt="image" width="506" height="174" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;动态提示类弹出层:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_24.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_11.png" alt="image" width="628" height="184" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;遮罩类弹出层:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_26.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_12.png" alt="image" width="644" height="254" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.关键点讲解&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1)计算弹出层位置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;提示类弹出框最重要的是计算弹出框的位置. 通过事件对象获取到事件源, 使用offset()函数计算事件源相对于document的位置:&lt;/p&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; top = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset().top;&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; left = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset().left;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;因为是相对于document, 即页面左上角的位置, 所以&lt;strong&gt;需要将弹出层放在Body元素中的第一层.&lt;/strong&gt; 即父类就是body. &lt;strong&gt;如果包含在其他元素中, 需要确定任何一个父类的position样式设置为了relative.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;计算出来的top和left是事件源的位置, 在此位置显示会将事件源对象遮盖住. 所以通常需要手工做一些偏移, 比如top+20.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) 取消冒泡和浏览器默认行为&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果我们为document对象绑定了单击后关闭弹出层的事件, 那么就一定要取消事件的冒泡. 使用event对象的stopPropagation()方法可以取消冒泡.&lt;/p&gt;&lt;span class="kwrd"&gt;event&lt;/span&gt;.stopPropagation();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;对于具有默认行为的元素,比如提交按钮的提交表单行为, &amp;lt;a&amp;gt;元素的超链接行为等, 我们如果在这些元素上应用事件, 还需要取消它们的默认行为:&lt;/p&gt;&lt;span class="kwrd"&gt;event&lt;/span&gt;.preventDefault();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;(3) 设置动画效果与取消动画&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过设置dialog的配置项的show属性, 可以设置显示dialog时候的动画效果:&lt;/p&gt;$(&lt;span class="str"&gt;'.selector'&lt;/span&gt;).dialog({ show: &lt;span class="str"&gt;'slide'&lt;/span&gt; });&lt;p&gt;show默认为null即无动画,&amp;nbsp; 可以是使用下列值:&lt;/p&gt;&lt;span class="str"&gt;'blind'&lt;/span&gt;, &lt;span class="str"&gt;'clip'&lt;/span&gt;, &lt;span class="str"&gt;'drop'&lt;/span&gt;, &lt;span class="str"&gt;'explode'&lt;/span&gt;, &lt;span class="str"&gt;'fold'&lt;/span&gt;, &lt;span class="str"&gt;'puff'&lt;/span&gt;, &lt;span class="str"&gt;'slide'&lt;/span&gt;, &lt;span class="str"&gt;'scale'&lt;/span&gt;, &lt;span class="str"&gt;'size'&lt;/span&gt;, &lt;span class="str"&gt;'pulsate'&lt;/span&gt;.&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;对于这些动画的效果, 可以在此页观看:&lt;/p&gt;&lt;p&gt;&lt;a title="http://jqueryui.com/demos/show/" href="http://jqueryui.com/demos/show/"&gt;http://jqueryui.com/demos/show/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;当一个动画效果执行时, 如果用户在此对这个元素进行操作, 就会出现各种问题, 比如定位不准确等. 所以如果应用了动画, 我们在对其操作时需要使用stop()函数来停止动画, 通常是停止虽有元素的动画:&lt;/p&gt;$(&lt;span class="str"&gt;"*"&lt;/span&gt;).stop();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;但是即使停止了动画再进行操作, 如果操作的太快也容易产生问题. 所以至于是否使用动画需要经过权衡决定.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(4) 动态提示类弹出层的数据传递&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;动态提示类弹出层的数据是不同的,&amp;nbsp; 本文实例使用的是将数据存储在元素属性data上:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="spanShowDataTip1"&lt;/span&gt; &lt;span class="attr"&gt;data&lt;/span&gt;&lt;span class="kwrd"&gt;="颜色是红色"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;红色&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这是一种简单直观的方式. 比较容易编程实现(尤其是在使用MVC编程模型的时候.)&lt;/p&gt;&lt;p&gt;还有一种常用方式是使用javascript变量存储数据.这两种方式在第5章时有过讲解:&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.cnblogs.com/zhangziqiu/archive/2009/05/06/jQuery-Learn-5.html" href="http://www.cnblogs.com/zhangziqiu/archive/2009/05/06/jQuery-Learn-5.html"&gt;http://www.cnblogs.com/zhangziqiu/archive/2009/05/06/jQuery-Learn-5.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(5)更换主题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;大家注意实例中的弹出层没有为其编辑任何样式, 但是显示出来后已经被美化过了. 这是因为我引用了jQuery UI的主题:&lt;/p&gt;    &lt;span class="rem"&gt;&amp;lt;!--black-tie,blitzer,blitzer,dot-luv,excite-bike,hot-sneaks,humanity,mint-choc,redmond,smoothness,south-street,start,swanky-purse,trontastic,ui-darkness,ui-lightness,vader--&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%=WebConfig.ResourceServer +"&lt;/span&gt;/&lt;span class="attr"&gt;JsLib&lt;/span&gt;/&lt;span class="attr"&gt;jquery&lt;/span&gt;/&lt;span class="attr"&gt;themes&lt;/span&gt;/&lt;span class="attr"&gt;redmond&lt;/span&gt;/&lt;span class="attr"&gt;style&lt;/span&gt;.&lt;span class="attr"&gt;css&lt;/span&gt;&lt;span class="kwrd"&gt;"%&amp;gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;注释中有很多的主题, 只需要将引用路径中的"redmond"改为其中任何一个, 弹出层的样式会立刻发生变化.&lt;/p&gt;&lt;p&gt;VS中有一个Bug, 就是针对link标签, href中的语句块编译有问题, 某些情况下&amp;lt;%%&amp;gt;不被编辑解析. 所以我使用上面代码中的方式构造href属性值.&lt;/p&gt;&lt;p&gt;可以在下面的地址查看各个主题的效果:&lt;/p&gt;&lt;p&gt;&lt;a title="http://jqueryui.com/themeroller/#themeGallery" href="http://jqueryui.com/themeroller/#themeGallery"&gt;http://jqueryui.com/themeroller/#themeGallery&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六.Tab标签&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;不刷新页面, 在页面中的不同标签间切换:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_8.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_3.png" alt="image" width="644" height="47" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;本实例通过jQuery UI的Tabs组件实现. Tabs组件的使用与dialog一样十分简单,&amp;nbsp; 默认的配置即可实现最简单的tab, 通过设置更多的options可以实现更复杂的应用.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.应用实例&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;源代码:&lt;/strong&gt;&lt;/p&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#" %&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="Head1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery UI - 弹出层应用实例 Dialog&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;&amp;lt;!--black-tie,blitzer,blitzer,dot-luv,excite-bike,hot-sneaks,humanity,mint-choc,redmond,smoothness,south-street,start,swanky-purse,trontastic,ui-darkness,ui-lightness,vader--&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%=WebConfig.ResourceServer +"&lt;/span&gt;/&lt;span class="attr"&gt;JsLib&lt;/span&gt;/&lt;span class="attr"&gt;jquery&lt;/span&gt;/&lt;span class="attr"&gt;themes&lt;/span&gt;/&lt;span class="attr"&gt;redmond&lt;/span&gt;/&lt;span class="attr"&gt;style&lt;/span&gt;.&lt;span class="attr"&gt;css&lt;/span&gt;&lt;span class="kwrd"&gt;"%&amp;gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;% =WebConfig.ResourceServer %&amp;gt;/JsLib/jquery/jquery-min-lastest.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;script src=&lt;span class="str"&gt;"&amp;lt;% =WebConfig.ResourceServer %&amp;gt;/JsLib/jquery/ui/jquery-ui-all-min-lastest.js"&lt;/span&gt;&lt;br/&gt;        type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;    &amp;lt;% &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;false&lt;/span&gt;)&lt;br/&gt;       {%&amp;gt;&amp;lt;script src=&lt;span class="str"&gt;"~/js/jquery-vsdoc-lastest.js"&lt;/span&gt; type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;    &amp;lt;% }%&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*========== 必须放在头部加载的语句块. 尽量避免使用 ==========*/&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;style type=&lt;span class="str"&gt;"text/css"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;/style&amp;gt;&lt;br/&gt;&amp;lt;/head&amp;gt;&lt;br/&gt;&amp;lt;body&amp;gt;&lt;br/&gt;    &amp;lt;!--Demo.默认Tab与Ajax Tab --&amp;gt;&lt;br/&gt;    &amp;lt;div id=&lt;span class="str"&gt;"tabs1"&lt;/span&gt; style=&lt;span class="str"&gt;"width:300px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;ul&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs1-1"&lt;/span&gt;&amp;gt;One&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;!-- Ajax Tab --&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"TabData.htm"&lt;/span&gt;&amp;gt;Two&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs1-3"&lt;/span&gt;&amp;gt;Three&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;        &amp;lt;/ul&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs1-1"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab1内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs1-3"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab3内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;!--Demo. 可折叠的Tab --&amp;gt;&lt;br/&gt;    &amp;lt;div id=&lt;span class="str"&gt;"tabs2"&lt;/span&gt; style=&lt;span class="str"&gt;"width: 300px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;ul&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs2-1"&lt;/span&gt;&amp;gt;One&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs2-2"&lt;/span&gt;&amp;gt;Two&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs2-3"&lt;/span&gt;&amp;gt;Three&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;        &amp;lt;/ul&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs2-1"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab1内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs2-2"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab2内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs2-3"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab3内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;!--Demo. 鼠标滑动即切换的Tab --&amp;gt;&lt;br/&gt;    &amp;lt;div id=&lt;span class="str"&gt;"tabs3"&lt;/span&gt; style=&lt;span class="str"&gt;"width: 300px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;ul&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs3-1"&lt;/span&gt;&amp;gt;One&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs3-2"&lt;/span&gt;&amp;gt;Two&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;li&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#tabs3-3"&lt;/span&gt;&amp;gt;Three&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;        &amp;lt;/ul&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs3-1"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab1内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs3-2"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab2内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"tabs3-3"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;p&amp;gt;Tab3内容&amp;lt;/p&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========用户自定义方法==========*/&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========事件绑定==========*/&lt;/span&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;&lt;br/&gt;        });&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========加载时执行的语句==========*/&lt;/span&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="rem"&gt;//默认Tabs&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#tabs1"&lt;/span&gt;).tabs();&lt;br/&gt;            &lt;span class="rem"&gt;//可折叠的Tabs&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#tabs2"&lt;/span&gt;).tabs({&lt;br/&gt;                collapsible: &lt;span class="kwrd"&gt;true&lt;/span&gt;&lt;br/&gt;            });&lt;br/&gt;            &lt;span class="rem"&gt;//鼠标滑动即切换的Tabs&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#tabs3"&lt;/span&gt;).tabs({&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;: &lt;span class="str"&gt;"mouseover"&lt;/span&gt;&lt;br/&gt;            });&lt;br/&gt;        });        &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;效果:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 默认设置的Tabs, Two标签内容使用Ajax获取&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_28.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_13.png" alt="image" width="244" height="132" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_30.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_14.png" alt="image" width="244" height="105" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.再折叠tab&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_32.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_15.png" alt="image" width="244" height="60" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.鼠标滑动即切换的tab&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_34.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_16.png" alt="image" width="244" height="141" border="0" /&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.要点讲解&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1) 注意Tabs中的HTML结构.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用ul构建标签. 内容div一定要和标签关联, 没有关联的div将不被处理直接显示.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) 使用Ajax可以不指定内容容器, 但是也可以将Ajax内容放入指定容器中.&lt;/strong&gt;&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="hello/world.html"&lt;/span&gt; &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;="Todo Overview"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ... &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="Todo_Overview"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; ... &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;p&gt;&lt;strong&gt;(3)&amp;nbsp; 活用事件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;tab有很多事件:&lt;/p&gt;&lt;p&gt;select, load, show, add, remove, enable, disable&lt;/p&gt;&lt;p&gt;使用这些事件可以完成很多复杂任务. 需要注意事件的签名:&lt;/p&gt;$(&lt;span class="str"&gt;'#example'&lt;/span&gt;).bind(&lt;span class="str"&gt;'tabsselect'&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;, ui) {&lt;br/&gt;&lt;br/&gt;    &lt;span class="rem"&gt;// Objects available in the function context:&lt;/span&gt;&lt;br/&gt;    ui.tab     &lt;span class="rem"&gt;// anchor element of the selected (clicked) tab&lt;/span&gt;&lt;br/&gt;    ui.panel   &lt;span class="rem"&gt;// element, that contains the selected/clicked tab contents&lt;/span&gt;&lt;br/&gt;    ui.index   &lt;span class="rem"&gt;// zero-based index of the selected (clicked) tab&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;});&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;第一个是事件对象, 第二个ui对象是传递的额外参数, 我们可以获取tab对象, tab所在容器和tab的索引值.&lt;/p&gt;&lt;p&gt;比如我们可以在事件中做验证:&lt;/p&gt;$(&lt;span class="str"&gt;'#example'&lt;/span&gt;).tabs({&lt;br/&gt;    select: &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;, ui) {&lt;br/&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; isValid = ... &lt;span class="rem"&gt;// form validation returning true or false&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; isValid;&lt;br/&gt;    }&lt;br/&gt;});&lt;p&gt;或者当添加一个tab时立刻切换到选中状态:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; $tabs = $(&lt;span class="str"&gt;'#example'&lt;/span&gt;).tabs({&lt;br/&gt;    add: &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;, ui) {&lt;br/&gt;        $tabs.tabs(&lt;span class="str"&gt;'select'&lt;/span&gt;, &lt;span class="str"&gt;'#'&lt;/span&gt;+ ui.panel.id);&lt;br/&gt;    }&lt;br/&gt;});&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;活学活用, 更多应用大家也可以参见tab组件的官方文档:&lt;/p&gt;&lt;p&gt;&lt;a title="http://jqueryui.com/demos/tabs" href="http://jqueryui.com/demos/tabs"&gt;http://jqueryui.com/demos/tabs&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七. 手风琴菜单&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用jQuery UI的accordion组件可以实现手风琴菜单. 效果见下图.&lt;/p&gt;&lt;p&gt;accordion文档地址: &lt;a title="http://jqueryui.com/demos/accordion/" href="http://jqueryui.com/demos/accordion/"&gt;http://jqueryui.com/demos/accordion/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.实例效果&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_36.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_1019E/image_thumb_17.png" alt="image" width="336" height="292" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.实例代码&lt;/strong&gt;&lt;/p&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#" %&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="Head1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery UI - 手风琴菜单应用实例 Accordion &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;&amp;lt;!--black-tie,blitzer,blitzer,dot-luv,excite-bike,hot-sneaks,humanity,mint-choc,redmond,smoothness,south-street,start,swanky-purse,trontastic,ui-darkness,ui-lightness,vader--&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%=WebConfig.ResourceServer +"&lt;/span&gt;/&lt;span class="attr"&gt;JsLib&lt;/span&gt;/&lt;span class="attr"&gt;jquery&lt;/span&gt;/&lt;span class="attr"&gt;themes&lt;/span&gt;/&lt;span class="attr"&gt;redmond&lt;/span&gt;/&lt;span class="attr"&gt;style&lt;/span&gt;.&lt;span class="attr"&gt;css&lt;/span&gt;&lt;span class="kwrd"&gt;"%&amp;gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;% =WebConfig.ResourceServer %&amp;gt;/JsLib/jquery/jquery-min-lastest.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;script src=&lt;span class="str"&gt;"&amp;lt;% =WebConfig.ResourceServer %&amp;gt;/JsLib/jquery/ui/jquery-ui-all-min-lastest.js"&lt;/span&gt;&lt;br/&gt;        type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;    &amp;lt;% &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;false&lt;/span&gt;)&lt;br/&gt;       {%&amp;gt;&amp;lt;script src=&lt;span class="str"&gt;"~/js/jquery-vsdoc-lastest.js"&lt;/span&gt; type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;    &amp;lt;% }%&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*========== 必须放在头部加载的语句块. 尽量避免使用 ==========*/&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;style type=&lt;span class="str"&gt;"text/css"&lt;/span&gt;&amp;gt;&lt;br/&gt;        body&lt;br/&gt;        {&lt;br/&gt;            font-size: 12px;&lt;br/&gt;        }&lt;br/&gt;    &amp;lt;/style&amp;gt;&lt;br/&gt;&amp;lt;/head&amp;gt;&lt;br/&gt;&amp;lt;body&amp;gt;&lt;br/&gt;    &amp;lt;!-- Demo. 默认配置的Accordion菜单 --&amp;gt;&lt;br/&gt;    &amp;lt;div style=&lt;span class="str"&gt;"width: 300px; float:left; margin-left:20px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"accordion1"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单1&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单2&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单2的内容&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单3&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单3的内容&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;!-- Demo. 取消自动高度, 可折叠 --&amp;gt;&lt;br/&gt;    &amp;lt;div style=&lt;span class="str"&gt;"width: 300px; float: left; margin-left: 20px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"accordion2"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单1&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单2&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单2的内容&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单3&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单3的内容&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;!-- Demo. 鼠标滑动触发, 自定义图标 --&amp;gt;&lt;br/&gt;    &amp;lt;div style=&lt;span class="str"&gt;"width: 300px; float: left; margin-left: 20px;"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &amp;lt;div id=&lt;span class="str"&gt;"accordion3"&lt;/span&gt;&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单1&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;                菜单1的内容&amp;lt;br /&amp;gt;&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单2&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单2的内容&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;            &amp;lt;h3&amp;gt;&amp;lt;a href=&lt;span class="str"&gt;"#"&lt;/span&gt;&amp;gt;菜单3&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;br/&gt;            &amp;lt;div&amp;gt;&lt;br/&gt;                菜单3的内容&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========用户自定义方法==========*/&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========事件绑定==========*/&lt;/span&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;&lt;br/&gt;        });&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/*==========加载时执行的语句==========*/&lt;/span&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="rem"&gt;//默认配置的Accordion菜单&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#accordion1"&lt;/span&gt;).accordion();&lt;br/&gt;            &lt;span class="rem"&gt;//取消自动高度, 可折叠&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#accordion2"&lt;/span&gt;).accordion({&lt;br/&gt;                autoHeight:&lt;span class="kwrd"&gt;false&lt;/span&gt;,&lt;br/&gt;                collapsible: &lt;span class="kwrd"&gt;true&lt;/span&gt;&lt;br/&gt;            });&lt;br/&gt;            &lt;span class="rem"&gt;//鼠标滑动触发, 自定义图标&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#accordion3"&lt;/span&gt;).accordion({&lt;br/&gt;                icons: {&lt;br/&gt;                            header: &lt;span class="str"&gt;"ui-icon-circle-arrow-e"&lt;/span&gt;,&lt;br/&gt;                               headerSelected: &lt;span class="str"&gt;"ui-icon-circle-arrow-s"&lt;/span&gt;&lt;br/&gt;                        },&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;: &lt;span class="str"&gt;"mouseover"&lt;/span&gt;&lt;br/&gt;            });&lt;br/&gt;        });   &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. 关键点讲解&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1) 注意高度设置过小问题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;当包含accordion控件的容器高度设计过小时, 在FireFox3中在此容器后面的内容会被accordion控件部分遮盖. 在IE中没有此问题. 经检查是因为容器高度小于菜单高度导致.&amp;nbsp; 所以我们在应用时应当注意不要将容器高度设置过小.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) 部分关键属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;autoHeight: 设置是否自动将内容高度设置为容器高度.&lt;/p&gt;&lt;p&gt;collapsible: 设置是否可折叠&lt;/p&gt;&lt;p&gt;一般上面两个配合使用,&amp;nbsp; 以为折叠后肯定会改变菜单高度, 会导致autoHeight设置为true无效.&lt;/p&gt;&lt;p&gt;更多属性和事件使用请参阅官方文档.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;本章简单介绍了jQueryUI, 并且使用jQuery UI完成了弹出层,tabs,手风琴菜单的应用实例. 使用jQuery UI可以不需要额外寻找插件. 并且实现简单.&lt;/p&gt;&lt;p&gt;但是有些功能是必须使用插件完成的. 下一张讲解两个插件实例: 自动完成插件AutoComplete 和 表单验证插件jQuery Validate.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2372868.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/29/2372868.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/29/2372858.html</id><title type="text">从零开始学习jQuery (九) jQuery工具函数</title><summary type="text">一.摘要本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍.我们经常要使用脚本处理各种业务逻辑, 最常见的就是数组和对象的操作. jQuery工具函数为我们操作对象和数组提供了便利条件.二.前言大部分人仅仅使用jQuery的选择器选择对象, 或者实现页面动画效果. 在处理业务逻辑时常常自己编写很多算法. 本文提醒各位jQuery也能提高我们操作对象和数组的效率. 并且可以将一些常用算法扩充到jQuery工具函数中, 实现脚本函数的复用.三.什么是工具函数工具函数是指在jQuery对象(即变量"$&amp;q</summary><published>2012-02-29T02:01:00Z</published><updated>2012-02-29T02:01:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/29/2372858.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/29/2372858.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,&amp;nbsp; 即使你会使用jQuery也能在阅读中发现些许秘籍.&lt;/p&gt;&lt;p&gt;我们经常要使用脚本处理各种业务逻辑, 最常见的就是数组和对象的操作. jQuery工具函数为我们操作对象和数组提供了便利条件.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;大部分人仅仅使用jQuery的选择器选择对象, 或者实现页面动画效果. 在处理业务逻辑时常常自己编写很多算法. 本文提醒各位jQuery也能提高我们操作对象和数组的效率. 并且可以将一些常用算法扩充到jQuery工具函数中, 实现脚本函数的复用.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.什么是工具函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;工具函数是指在jQuery对象(即变量"$")上定义的函数. 这些函数都是工具类函数.比如C#中最常用的trim()函数:&lt;/p&gt;$.trim(&lt;span class="str"&gt;"  text   "&lt;/span&gt;);&lt;p&gt;在原始javascript中并没有提供同时去除前后空格的trim函数. 所以这一类常用的工具函数统称为 "Utilities" 函数.对应jQuery官方文档:&lt;/p&gt;&lt;p&gt;&lt;a title="http://docs.jquery.com/Utilities" href="http://docs.jquery.com/Utilities"&gt;http://docs.jquery.com/Utilities&lt;/a&gt;&lt;/p&gt;&lt;p&gt;"$"其实是"window"对象的属性,&amp;nbsp; 所以下面几句话是等价的:&lt;/p&gt; $.trim(&lt;span class="str"&gt;"  text   "&lt;/span&gt;);&lt;br/&gt;window.$.trim(&lt;span class="str"&gt;"  text   "&lt;/span&gt;);&lt;br/&gt;window.jQuery(&lt;span class="str"&gt;"  text   "&lt;/span&gt;);&lt;br/&gt;jQuery.trim(&lt;span class="str"&gt;"  text   "&lt;/span&gt;);&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四.工具函数分类&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;工具函数主要分为下面几类:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;浏览器及特性检测&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;数组和对象操作&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;测试操作&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;字符串操作&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Url操作&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;区别于前几章的讲解方式, 本文不在列举函数列表. 大家在应用中, 比如遇到想操作一个字符串, 可以首先从在&lt;strong&gt;"API文档/Utilities/字符串操作"&lt;/strong&gt;中查找是否已经提供了快捷的工具函数. 如果没有再考虑自己开发.&lt;/p&gt;&lt;p&gt;下面使用实例具体的每个分类下常用的工具函数.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五.浏览器及特性检测&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery的优秀就在于其跨浏览器的特性, 通常我们不用再针对不同浏览器书写不同的代码.&amp;nbsp; 但是如果是jQuery开发人员或者插件开发人员就要自行处理浏览器差异, 以便为用户提供跨浏览器的特性.&lt;/p&gt;&lt;p&gt;jQuery提供了下列属性用于获取浏览器特性:&lt;/p&gt;&lt;table style="width: 482px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="273"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.support"&gt;jQuery.support&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="204"&gt;1.3版本新增&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="273"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.browser"&gt;jQuery.browser&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="204"&gt;已废除&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="273"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.browser.version"&gt;jQuery.browser.version&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="204"&gt;已废除&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="273"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.boxModel"&gt;jQuery.boxModel&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="204"&gt;已废除&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在1.3版本中已经废除了三个属性, 这里不再讲解.&amp;nbsp; 让我们将注意力放在 &lt;a&gt;&lt;strong&gt;jQuery.support&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;nbsp; &lt;/strong&gt;函数上.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;jQuery.support&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值:&lt;/strong&gt; &lt;a href="http://docs.jquery.com/Types#Object"&gt;Object&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery 1.3 新增。一组用于展示不同浏览器各自特性和bug的属性集合。&lt;/p&gt;&lt;p&gt;jQuery提供了一系列属性，你也可以自由增加你自己的属性。其中许多属性是很低级的，所以很难说他们能否在日新月异的发展中一直保持有效，但这这些主要用于插件和内核开发者。&lt;/p&gt;&lt;p&gt;所有这些支持的属性值都通过特性检测来实现，而不是用任何浏览器检测。以下有一些非常棒的资源用于解释这些特性检测是如何工作的：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting&lt;/li&gt;&lt;li&gt;http://yura.thinkweb2.com/cft/&lt;/li&gt;&lt;li&gt;http://www.jibbering.com/faq/faq_notes/not_browser_detect.html&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;jQuery.support主要包括以下测试：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;boxModel&lt;/strong&gt;: 如果这个页面和浏览器是以W3C CSS盒式模型来渲染的，则等于true。通常在IE 6和IE 7的怪癖模式中这个值是false。在document准备就绪前，这个值是null。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;cssFloat&lt;/strong&gt;: 如果用cssFloat来访问CSS的float的值，则返回true。目前在IE中会返回false,他用styleFloat代替。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;hrefNormalized&lt;/strong&gt;: 如果浏览器从getAttribute("href")返回的是原封不动的结果，则返回true。在IE中会返回false，因为他的URLs已经常规化了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;htmlSerialize&lt;/strong&gt;: 如果浏览器通过innerHTML插入链接元素的时候会序列化这些链接，则返回true，目前IE中返回false。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;leadingWhitespace&lt;/strong&gt;: 如果在使用innerHTML的时候浏览器会保持前导空白字符，则返回true，目前在IE 6-8中返回false。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;noCloneEvent&lt;/strong&gt;: 如果浏览器在克隆元素的时候不会连同事件处理函数一起复制，则返回true，目前在IE中返回false。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;objectAll&lt;/strong&gt;: 如果在某个元素对象上执行getElementsByTagName("*")会返回所有子孙元素，则为true，目前在IE 7中为false。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;opacity&lt;/strong&gt;: 如果浏览器能适当解释透明度样式属性，则返回true，目前在IE中返回false，因为他用alpha滤镜代替。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;scriptEval&lt;/strong&gt;: 使用 appendChild/createTextNode 方法插入脚本代码时，浏览器是否执行脚本，目前在IE中返回false，IE使用 .text 方法插入脚本代码以执行。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;style&lt;/strong&gt;: 如果getAttribute("style")返回元素的行内样式，则为true。目前IE中为false，因为他用cssText代替。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;tbody&lt;/strong&gt;: 如果浏览器允许table元素不包含tbody元素，则返回true。目前在IE中会返回false，他会自动插入缺失的tbody。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;针对上面众多的浏览器特性属性,&amp;nbsp; 本文只讲解两个特性.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.盒式模型 boxModel&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下图是W3C标准中的盒式模型图:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_4.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_thumb_1.png" alt="image" width="453" height="358" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;假设如下元素:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;.boxModel&lt;br/&gt;{&lt;br/&gt;    width:200px;&lt;br/&gt;    height:50px;&lt;br/&gt;    padding:10px;&lt;br/&gt;    border:solid 5px #FF0000;&lt;br/&gt;    background-color:#acacac;&lt;br/&gt;}&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divBox"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="boxModel"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;显示效果如图:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_6.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_thumb_2.png" alt="image" width="244" height="93" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;在CSS中设定元素宽度为200px, 下面以此元素为例讲解盒式模式.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;W3C 盒式模型:&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;元素的宽度和高度为盒式模型图中的Context部分, 不包括padding, border和margin部分.&lt;/p&gt;&lt;p&gt;目前除了IE所有的浏览器都&lt;strong&gt;仅支持W3C盒式模型&lt;/strong&gt;. 在W3C盒式模型中,&amp;nbsp; 示例中包含红框在内的区域内容宽度为200+2*10+2*5=230px, 高度为50+2*10+2*5=80px.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;IE 盒式模型:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;设置的宽度包括padding,border. 实际内容宽度content Width = width&amp;nbsp; - padding &amp;ndash; border&lt;/p&gt;&lt;p&gt;在IE5.5及更早的版本中, 使用了此模型. 在更高的IE版本上如果由于某些原因让浏览器运行在怪异模式下则也会使用此盒式模式.所以需要在页面上声明正确的DOCTYPE. 有关DOCTYPE请参考此文:&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.cnblogs.com/zhangziqiu/archive/2009/01/15/doctype.html" href="http://www.cnblogs.com/zhangziqiu/archive/2009/01/15/doctype.html"&gt;http://www.cnblogs.com/zhangziqiu/archive/2009/01/15/doctype.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;下面是两种盒式模式的对比:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_8.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_thumb_3.png" alt="image" width="303" height="375" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;我们可以使用 &lt;strong&gt;jQuery.support.boxModel&lt;/strong&gt; 属性来获取浏览器是否使用了W3C盒式模型. true表示使用W3C boxModel.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.浮动样式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过javascript脚本设置元素的float样式时, IE和FireFox存在不同, IE使用style.styleFloat, FireFox使用style.cssFloat:&lt;/p&gt;div.style.styleFloat = &lt;span class="str"&gt;"left"&lt;/span&gt;; &lt;span class="rem"&gt;//IE&lt;/span&gt;&lt;br/&gt;div.stlye.cssFloat = &lt;span class="str"&gt;"left"&lt;/span&gt;; //FF&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt; jQuery.support.cssFloat &lt;/strong&gt;属性返回true则表示可以使用cssFloat来设置float样式. IE中返回false;&lt;/p&gt;&lt;p&gt;注意, 我们可以通过CSS()方法设置float样式, jQuery内部会自动帮我们判断是使用styleFloat还是cssFloat:&lt;/p&gt;$(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).css(&lt;span class="str"&gt;"float"&lt;/span&gt;,&lt;span class="str"&gt;"left"&lt;/span&gt;); //兼容IE和FF&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六.数组和对象操作&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;实现UI我们常常操作DOM对象或者jQuery包装集, 但是实现算法或者业务逻辑时往往操作的是数组和对象.&lt;/p&gt;&lt;p&gt;下面讲解最常用的数组和对象相关的工具函数.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.迭代&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.each#objectcallback"&gt;jQuery.each( object, callback )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值:&lt;/strong&gt;Object&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通用例遍方法，可用于例遍对象和数组。&lt;/p&gt;&lt;p&gt;不同于例遍 jQuery 对象的 $().each() 方法，此方法可用于例遍任何对象。回调函数拥有两个参数：第一个为对象的成员或数组的索引，第二个为对应变量或内容。如果需要退出 each 循环可使回调函数返回 false，其它返回值将被忽略。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;对于jQuery包装集我们可以使用each(callback)方法迭代包装集中的每一个元素. callback是一个会函数, 接受一个参数表示当前访问对象的索引.&lt;/p&gt;$(&lt;span class="str"&gt;"img"&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;(i){&lt;br/&gt;   &lt;span class="kwrd"&gt;this&lt;/span&gt;.src = &lt;span class="str"&gt;"test"&lt;/span&gt; + i + &lt;span class="str"&gt;".jpg"&lt;/span&gt;;&lt;br/&gt; });&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;对于数组我们可以使用 &lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.each#objectcallback"&gt;jQuery.each( object, callback )&lt;/a&gt;&lt;/strong&gt; 来遍历, 这等同于使用for循环.&lt;/p&gt;&lt;p&gt;注意传入的第一个参数可以是数组或者对象.如果数组,则遍历数组中的每一个对象. &lt;strong&gt;第一个参数表示索引,第二个参数表示值, this表示当前遍历的元素,&lt;/strong&gt; 可以通过返回false终止迭代, 比如下面的示例遍历到第二个元素后会终止:&lt;/p&gt;                $.each([&lt;span class="str"&gt;"a"&lt;/span&gt;, &lt;span class="str"&gt;"b"&lt;/span&gt;, &lt;span class="str"&gt;"c"&lt;/span&gt;], &lt;span class="kwrd"&gt;function&lt;/span&gt;(i, n)&lt;br/&gt;                {&lt;br/&gt;                    alert(&lt;span class="str"&gt;"Item #"&lt;/span&gt; + i + &lt;span class="str"&gt;": "&lt;/span&gt; + n);&lt;span class="rem"&gt;//可以获取到i值&lt;/span&gt;&lt;br/&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;gt;= 1)&lt;br/&gt;                    {&lt;br/&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br/&gt;                    }&lt;br/&gt;                });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;            $(&lt;span class="str"&gt;"#iterateArray"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; array = $.each([&lt;span class="str"&gt;"a"&lt;/span&gt;, &lt;span class="str"&gt;"b"&lt;/span&gt;, &lt;span class="str"&gt;"c"&lt;/span&gt;], &lt;span class="kwrd"&gt;function&lt;/span&gt;(i, n)&lt;br/&gt;                {&lt;br/&gt;                    alert(&lt;span class="str"&gt;"Item #"&lt;/span&gt; + i + &lt;span class="str"&gt;": "&lt;/span&gt; + n ); &lt;span class="rem"&gt;//第一个参数i表示索引, this表示当前遍历的对象&lt;/span&gt;&lt;br/&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;gt;= 1)&lt;br/&gt;                    {&lt;br/&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br/&gt;                    }&lt;br/&gt;                });&lt;br/&gt;            });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;如果传递的是对象, 则遍历对象的每一个属性, 即使函数返回false也依然会遍历完所有的属性, &lt;strong&gt;&lt;strong&gt;第一个参数表示属性key(属性名称,是obejct类型),第二个参数表示值,&lt;/strong&gt;,this表示当前属性的值:&lt;/strong&gt;&lt;/p&gt;            $(&lt;span class="str"&gt;"#iterateObject"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $.each({ name: &lt;span class="str"&gt;"ziqiu.zhang"&lt;/span&gt;, sex: &lt;span class="str"&gt;"male"&lt;/span&gt;, status: &lt;span class="str"&gt;"single"&lt;/span&gt; }, &lt;span class="kwrd"&gt;function&lt;/span&gt;(i, n)&lt;br/&gt;                {&lt;br/&gt;                    alert(&lt;span class="str"&gt;"Item #"&lt;/span&gt; + i.toString() + &lt;span class="str"&gt;": "&lt;/span&gt; + n ); &lt;span class="rem"&gt;//第一个参数i表示属性的key(object), this表示属性值&lt;/span&gt;&lt;br/&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;gt;= 1)&lt;br/&gt;                    {&lt;br/&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br/&gt;                    }&lt;br/&gt;                });&lt;br/&gt;            });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;each将是我们最常使用的函数, 特别注意each虽然迭代每一个元素或属性, 但是在迭代函数中并不会改变当前元素的值, 也就是无法改变返回后的对象.如果需要改变数组中的每一个元素并且将结果返回, 因使用&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.map#arraycallback"&gt;jQuery.map( array, callback )&lt;/a&gt;&lt;/strong&gt;函数.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.筛选&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.grep#arraycallbackinvert"&gt;jQuery.grep( array, callback, [invert] )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值: Array&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用过滤函数过滤数组元素。&lt;/p&gt;&lt;p&gt;此函数至少传递两个参数：待过滤数组和过滤函数。过滤函数必须返回 true 以保留元素或 false 以删除元素。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;默认invert为false, 即过滤函数返回true为保留元素. 如果设置invert为true, 则过滤函数返回true为删除元素.&lt;/p&gt;&lt;p&gt;下面的示例演示如何过滤数组中索引小于 0 的元素:&lt;/p&gt;$.grep( [0,1,2], &lt;span class="kwrd"&gt;function&lt;/span&gt;(n,i){&lt;br/&gt;  &lt;span class="kwrd"&gt;return&lt;/span&gt; n &amp;gt; 0;&lt;br/&gt;});&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;返回的结果是[1,2]&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.转换&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.map#arraycallback"&gt;jQuery.map( array, callback )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值:&lt;/strong&gt;Array&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明: &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;将一个数组中的元素转换到另一个数组中。&lt;/p&gt;&lt;p&gt;作为参数的转换函数会为每个数组元素调用，而且会给这个转换函数传递一个表示被转换的元素作为参数。转换函数可以返回转换后的值、null（删除数组中的项目）或一个包含值的数组，并扩展至原始数组中。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.3.2版本中此函数和each函数已经几乎相同(以前稍有不同),&amp;nbsp; 现在唯一的区别就是回调函数可以改变当前元素.返回null则删除当前元素.&lt;/p&gt;&lt;p&gt;下面是几个例子:&lt;/p&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; arr = [ &lt;span class="str"&gt;"a"&lt;/span&gt;, &lt;span class="str"&gt;"b"&lt;/span&gt;, &lt;span class="str"&gt;"c"&lt;/span&gt;, &lt;span class="str"&gt;"d"&lt;/span&gt;, &lt;span class="str"&gt;"e"&lt;/span&gt; ]&lt;br/&gt;    $(&lt;span class="str"&gt;"div"&lt;/span&gt;).text(arr.join(&lt;span class="str"&gt;", "&lt;/span&gt;));&lt;br/&gt;&lt;br/&gt;    arr = jQuery.map(arr, &lt;span class="kwrd"&gt;function&lt;/span&gt;(n, i){&lt;br/&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; (n.toUpperCase() + i);&lt;br/&gt;    });&lt;br/&gt;    $(&lt;span class="str"&gt;"p"&lt;/span&gt;).text(arr.join(&lt;span class="str"&gt;", "&lt;/span&gt;));&lt;br/&gt;&lt;br/&gt;    arr = jQuery.map(arr, &lt;span class="kwrd"&gt;function&lt;/span&gt; (a) { &lt;span class="kwrd"&gt;return&lt;/span&gt; a + a; });&lt;br/&gt;    $(&lt;span class="str"&gt;"span"&lt;/span&gt;).text(arr.join(&lt;span class="str"&gt;", "&lt;/span&gt;));&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.合并&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;合并对象是我们常常编写的功能, 通常使用臃肿的for循环来进行.jQuery为我们提供了很多功能的合并函数:&lt;/p&gt;&lt;table style="width: 790px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.extend#deeptargetobject1objectN"&gt;jQuery.extend( [deep], target, object1, [objectN] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;p&gt;用一个或多个其他对象来扩展一个对象，返回被扩展的对象。&lt;/p&gt;&lt;p&gt;如果不指定target，则给jQuery命名空间本身进行扩展。这有助于插件作者为jQuery增加新方法。&lt;/p&gt;&lt;p&gt;如果第一个参数设置为true，则jQuery返回一个深层次的副本，递归地复制找到的任何对象。否则的话，副本会与原对象共享结构。&lt;/p&gt;&lt;p&gt;为定义的属性将不会被复制，然而从对象的原型继承的属性将会被复制。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;合并 settings 和 options，修改并返回 settings:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;var settings = { validate: false, limit: 5, name: "foo" };&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var options = { validate: true, name: "bar" };&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jQuery.extend(settings, options);&lt;/code&gt;&lt;br /&gt;结果:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;settings == { validate: true, limit: 5, name: "bar" }&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.makeArray#obj"&gt;jQuery.makeArray( obj )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;p&gt;将类数组对象转换为数组对象。&lt;/p&gt;&lt;p&gt;类数组对象有 length 属性，其成员索引为 0 至 length - 1。实际中此函数在 jQuery 中将自动使用而无需特意转换。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;将DOM对象集合转换为数组:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;var arr = jQuery.makeArray(document.getElementsByTagName("div")); &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.inArray#valuearray"&gt;jQuery.inArray( value, array )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;确定第一个参数在数组中的位置，从0开始计数(如果没有找到则返回 -1 )。&lt;/td&gt;&lt;td valign="top" width="263"&gt;查看对应元素的位置:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;var arr = [ 4, "Pete", 8, "John" ]; jQuery.inArray("John", arr); //3 jQuery.inArray(4, arr); //0 jQuery.inArray("David", arr); //-1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.merge#firstsecond"&gt;jQuery.merge( first, second )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;p&gt;合并两个数组&lt;/p&gt;&lt;p&gt;返回的结果会修改第一个数组的内容&amp;mdash;&amp;mdash;第一个数组的元素后面跟着第二个数组的元素。要去除重复项，请使用$.unique()&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;合并两个数组到第一个数组上:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$.merge( [0,1,2], [2,3,4] )&lt;/code&gt;&lt;br /&gt;结果:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;[0,1,2,2,3,4]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.unique#array"&gt;jQuery.unique( array )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;删除数组中重复元素。只处理删除DOM元素数组，而不能处理字符串或者数字数组。&lt;/td&gt;&lt;td valign="top" width="263"&gt;删除重复 div 标签:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$.unique(document.getElementsByTagName("div"));&lt;/code&gt;&lt;code&gt;[&amp;lt;div&amp;gt;, &amp;lt;div&amp;gt;, ...]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;上面的函数看着有些混乱.&amp;nbsp; 看看我们以后会常用的.&lt;/p&gt;&lt;p&gt;首先是&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.merge#firstsecond"&gt;jQuery.merge( first, second )&lt;/a&gt;&lt;/strong&gt;, 将两个数组合并. 下面这个示例说明如何使用此函数:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Utilities - jQuery.merge&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $(&lt;span class="str"&gt;"#go"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(&lt;span class="str"&gt;""&lt;/span&gt;);&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; first = [1, 3, 5];&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;first:["&lt;/span&gt; + first.join(&lt;span class="str"&gt;","&lt;/span&gt;) + &lt;span class="str"&gt;"]&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; second = [2, 4, 6];&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;second:["&lt;/span&gt; + second.join(&lt;span class="str"&gt;","&lt;/span&gt;) + &lt;span class="str"&gt;"]&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; result = $.merge(first, second);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;result:["&lt;/span&gt; + result.join(&lt;span class="str"&gt;","&lt;/span&gt;) + &lt;span class="str"&gt;"]&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;first after merged:["&lt;/span&gt; + first.join(&lt;span class="str"&gt;","&lt;/span&gt;) + &lt;span class="str"&gt;"]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;second after merged:["&lt;/span&gt; + second.join(&lt;span class="str"&gt;","&lt;/span&gt;) + &lt;span class="str"&gt;"]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;            });&lt;br/&gt;        });       &lt;br/&gt;           &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="go"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        合并数组&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;结果如图:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_10.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_thumb_4.png" alt="image" width="336" height="181" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;strong&gt;另外不能因为有了jQuery就忘记我们的原始javascript. 比merge更常用的其实是join和split函数.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;merge函数会改变第一个合并的数组, 如果是我设计我就不会这么做. 因为返回值已经是合并后的数组了.如此设计让函数产生歧义.&lt;/p&gt;&lt;p&gt;列表中的那么多函数不再一一讲解. 先用先查. 除了 &lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.extend#deeptargetobject1objectN"&gt;jQuery.extend&lt;/a&gt;&lt;/strong&gt; 这个不得不提的函数. 下面单提一个小结讲解.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. &lt;strong&gt;jQuery.extend&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在开发插件的时候最常用此函数函数来处理options.&lt;/p&gt;&lt;p&gt;下面是fancybox插件获取options的代码:&lt;/p&gt;settings = $.extend({}, $.fn.fancybox.defaults, settings);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;上面的代码target是一个空对象, 将默认设置defaults作为第一个对象,&amp;nbsp; 将用户传入的设置setting合并到default上,&amp;nbsp; setting上有的属性以setting为准. setting没有传入的属性则使用default的默认值. 然后将合并的结果复制给target并作为函数返回值返回.&lt;/p&gt;&lt;p&gt;看一个完整的示例:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; empty = {}&lt;br/&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; defaults = { validate: &lt;span class="kwrd"&gt;false&lt;/span&gt;, limit: 5, name: &lt;span class="str"&gt;"foo"&lt;/span&gt; };&lt;br/&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; options = { validate: &lt;span class="kwrd"&gt;true&lt;/span&gt;, name: &lt;span class="str"&gt;"bar"&lt;/span&gt; };&lt;br/&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; settings = jQuery.extend(empty, defaults, options);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;结果:&lt;/p&gt;settings == { validate: &lt;span class="kwrd"&gt;true&lt;/span&gt;, limit: 5, name: &lt;span class="str"&gt;"bar"&lt;/span&gt; }&lt;br/&gt;empty == { validate: &lt;span class="kwrd"&gt;true&lt;/span&gt;, limit: 5, name: &lt;span class="str"&gt;"bar"&lt;/span&gt; }&lt;p&gt;target参数要传递一个空对象是因为target的值最后将被改变.比如:&lt;/p&gt;var defaults = { validate: &lt;span class="kwrd"&gt;false&lt;/span&gt;, limit: 5, name: &lt;span class="str"&gt;"foo"&lt;/span&gt; };&lt;br/&gt;var options = { validate: &lt;span class="kwrd"&gt;true&lt;/span&gt;, name: &lt;span class="str"&gt;"bar"&lt;/span&gt; };&lt;br/&gt;var settings = jQuery.extend(defaults, options);&lt;p&gt;上面的代码将defaults作为target参数,&amp;nbsp; 虽然最后settings的结果一样, 但是&lt;strong&gt;defaults的值被改变了! 而插件中的默认值应该都是固定! &lt;/strong&gt;所以使用时请注意target参数的用法.&lt;/p&gt;&lt;p&gt;下面是我的完整示例和结果:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Utilities - jQuery.extend&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $.toObjectString = &lt;span class="kwrd"&gt;function&lt;/span&gt; (obj)&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; result = &lt;span class="str"&gt;"{"&lt;/span&gt;;&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; counter = 0;&lt;br/&gt;            $.each(obj, &lt;span class="kwrd"&gt;function&lt;/span&gt;(i, n)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (counter &amp;gt; 0) { result += &lt;span class="str"&gt;","&lt;/span&gt;; }&lt;br/&gt;                result += i.toString() + &lt;span class="str"&gt;":"&lt;/span&gt; + n.toString();&lt;br/&gt;                counter++; &lt;br/&gt;            });&lt;br/&gt;            result += &lt;span class="str"&gt;"}"&lt;/span&gt;;&lt;br/&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; result;&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $(&lt;span class="str"&gt;"#go1"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(&lt;span class="str"&gt;""&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; empty = {}&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; defaults = { validate: &lt;span class="kwrd"&gt;false&lt;/span&gt;, limit: 5, name: &lt;span class="str"&gt;"foo"&lt;/span&gt; };&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; options = { validate: &lt;span class="kwrd"&gt;true&lt;/span&gt;, name: &lt;span class="str"&gt;"bar"&lt;/span&gt; };&lt;br/&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;empty:"&lt;/span&gt; + $.toObjectString(empty) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;defaults:"&lt;/span&gt; + $.toObjectString(defaults) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;options:"&lt;/span&gt; + $.toObjectString(options) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);                &lt;br/&gt;                &lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; settings = jQuery.extend(empty, defaults, options);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;settings after extend:"&lt;/span&gt; + $.toObjectString(settings) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;defaults after extend:"&lt;/span&gt; + $.toObjectString(defaults) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;options after extend:"&lt;/span&gt; + $.toObjectString(options) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#go2"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(&lt;span class="str"&gt;""&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt; &lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; defaults = { validate: &lt;span class="kwrd"&gt;false&lt;/span&gt;, limit: 5, name: &lt;span class="str"&gt;"foo"&lt;/span&gt; };&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; options = { validate: &lt;span class="kwrd"&gt;true&lt;/span&gt;, name: &lt;span class="str"&gt;"bar"&lt;/span&gt; };&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;defaults:"&lt;/span&gt; + $.toObjectString(defaults) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;options:"&lt;/span&gt; + $.toObjectString(options) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                &lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; settings = jQuery.extend(defaults, options);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;settings after extend:"&lt;/span&gt; + $.toObjectString(settings) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;defaults after extend:"&lt;/span&gt; + $.toObjectString(defaults) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;options after extend:"&lt;/span&gt; + $.toObjectString(options) + &lt;span class="str"&gt;"&amp;lt;/span&amp;gt;"&lt;/span&gt;).append(&lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;            });&lt;br/&gt;        });       &lt;br/&gt;           &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="go1"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="height:40px;width:400px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        jQuery.extend(empty, defaults, options)&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="go2"&lt;/span&gt;  &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="height:40px;width:400px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        jQuery.extend(defaults, options)&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;结果:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_12.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_thumb.png" alt="image" width="644" height="138" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_14.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_D738/image_thumb_5.png" alt="image" width="644" height="141" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七.测试工具函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;测试工具函数主要用于判断对象是否是某一种类型, 返回的都是Boolean值:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.isArray#obj"&gt;jQuery.isArray( obj )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.isFunction#obj"&gt;jQuery.isFunction( obj )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;同时别忘记了javascript中自带的isNaN和isFinite:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; test = &lt;span class="str"&gt;"123"&lt;/span&gt;;&lt;br/&gt;alert(isNaN(test));&lt;br/&gt;alert(isFinite(test));&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;isNaN函数判断参数是否是非数字. 如果是数字则返回false.&lt;/p&gt;&lt;p&gt;isFinite函数检查其参数是否是无穷大.如果参数是 NaN（非数字）,或者是正、负无穷大的数,则返回 false.否则返回true.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.字符处操作工具函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;目前核心类库中只有一个字符串工具函数:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.trim#str"&gt;jQuery.trim( str )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值:&lt;/strong&gt; string&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:去掉字符串起始和结尾的空格。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;举例:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;去掉字符串起始和结尾的空格:&lt;/p&gt;$.trim(&lt;span class="str"&gt;"  hello, how are you?  "&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;结果:&lt;/p&gt;&lt;span class="str"&gt;"hello, how are you?"&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;九.Url操作工具函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Utilities/jQuery.param#obj"&gt;jQuery.param( obj )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值:&lt;/strong&gt;string&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明: &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;将表单元素数组或者对象序列化。是.serialize()的核心方法。&lt;/p&gt;&lt;p&gt;数组或jQuery对象会按照name/value对进行序列化，普通对象按照key/value对进行序列化&lt;/p&gt;&lt;p&gt;&lt;strong&gt;举例:&lt;/strong&gt;&lt;/p&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; &lt;span class="kwrd"&gt;params&lt;/span&gt; = { width:1680, height:1050 };&lt;br/&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; str = jQuery.param(&lt;span class="kwrd"&gt;params&lt;/span&gt;);&lt;br/&gt;    $(&lt;span class="str"&gt;"#results"&lt;/span&gt;).text(str);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;结果:&lt;/p&gt;width=1680&amp;amp;height=1050&lt;p&gt;jQuery将其归为Urls分类, 因为此方法通常用于发送GET请求时将对象作为urls参数传递给服务端.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;十. 扩展工具函数与jQuery包装集函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;扩展工具函数只需要对jQuery(即"$")进行扩展. 通常开发工具函数或者插件的人希望在开发时使用"$", 但因为"$"有可能和其他脚本库冲突, 所以通常我们使用下面的语法开发工具函数:&lt;/p&gt;        (&lt;span class="kwrd"&gt;function&lt;/span&gt;($)&lt;br/&gt;        {&lt;br/&gt;            $.myExtendMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;(o)&lt;br/&gt;            {&lt;br/&gt;                alert(0);&lt;br/&gt;            };            &lt;br/&gt;        })(jQuery);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在函数体内的"$"能保证是代表jQuery对象.&lt;/p&gt;&lt;p&gt;然后使用这种方式开发不能享受到智能感知的便利. 一般我们将扩展工具函数和扩展jQuery包装集函数都放在一个单独的文件中.&lt;/p&gt;&lt;p&gt;下面这个示例演示如何添加自定义的jQuery工具方法和jQuery包装集方法:&lt;/p&gt;&lt;span class="rem"&gt;/// &amp;lt;reference path="jquery-1.3.2-vsdoc2.js" /&amp;gt;&lt;/span&gt;&lt;br/&gt;jQuery.myExtendMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;(o)&lt;br/&gt;{&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///        扩展方法注释.&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;param name="o" type="String"&amp;gt;参数提示文字&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;returns type="string" &amp;gt;返回值提示文字&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br/&gt;    alert(0);&lt;br/&gt;};&lt;br/&gt;&lt;br/&gt;jQuery.fn.myExtendMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;(o)&lt;br/&gt;{&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///        扩展方法注释.&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;param name="o" type="String"&amp;gt;参数提示文字&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;///    &amp;lt;returns type="string" &amp;gt;返回值提示文字&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br/&gt;    alert(0);&lt;br/&gt;};&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;通过第一行reference, 我们可以在此js文件中继续使用jQuery脚本智能感知.&lt;/p&gt;&lt;p&gt;jQuery.myExtendMethod方法扩展的工具函数.&lt;/p&gt;&lt;p&gt;jQuery.fn.myExtendMethod方法扩展的是jQuery包装集函数, 即为使用$()获取到的对象添加了方法.&lt;/p&gt;&lt;p&gt;同理使用XML注释, 比如&amp;lt;summary&amp;gt; 还可以为自定义方法添加智能感知提示.脚本中的XML注释和.NET中的一样, 有关.NET中的XML注释可以参考我的另外一篇文章:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhangziqiu/archive/2009/01/23/XmlComment.html"&gt;使用.NET中的XML注释(一) -- XML注释标签讲解&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;十一.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery提供了许多的工具函数,&amp;nbsp; 在一般情况下可以满足我们的需要. 但是对于像JSON格式化一类的操作, 需要我们自己扩展, 现有的各种扩展组件资源将提高我们的开发效率, 本系列Ajax章节就介绍的一个JSON序列化的组件jQuery.json. 更多的组件需要大家在工作中挖掘.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2372858.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/29/2372858.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371796.html</id><title type="text">从零开始学习jQuery (七) jQuery动画-让页面动起来!</title><summary type="text">一.摘要本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍.开发人员一直痛疼做动画. 但是有了jQuery你会瞬间成为别人(那些不知道jQuery的人)眼里的动画高手! 本文将介绍jQuery的动画相关函数.原来做动画如此简单!二.前言本系列文章的实例都是针对某一个技术细节的, 因为我们要学习的是基础知识, 虽然总有人希望要复杂一些的应用示例, 但是我想还是让我们先把基础打牢, 有了扎实的基础凭借每个人的智慧一定能创造出更多更好的应用.就在写这篇文章的前几天, 还有不止一个同事在为了"弹出层&amp;quo</summary><published>2012-02-28T08:52:00Z</published><updated>2012-02-28T08:52:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371796.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371796.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,&amp;nbsp; 即使你会使用jQuery也能在阅读中发现些许秘籍.&lt;/p&gt;&lt;p&gt;开发人员一直痛疼做动画. 但是有了jQuery你会瞬间成为别人(那些不知道jQuery的人)眼里的动画高手! 本文将介绍jQuery的动画相关函数.原来做动画如此简单!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本系列文章的实例都是针对某一个技术细节的, 因为我们要学习的是基础知识, 虽然总有人希望要复杂一些的应用示例, 但是我想还是让我们先把基础打牢,&amp;nbsp; 有了扎实的基础凭借每个人的智慧一定能创造出更多更好的应用.&lt;/p&gt;&lt;p&gt;就在写这篇文章的前几天, 还有不止一个同事在为了"弹出层"效果而犯愁. 但是以后再面对这样的功能看过本篇文章的每一个人都可以开心的微笑了. jQuery,&amp;nbsp; make work easy !&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.从实例开始&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;做web程序经常要使用弹出层, 比如单击文字或按钮显示一段提示文字等.&amp;nbsp; 假设有如下需求:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_4.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_thumb_1.png" alt="image" width="352" height="255" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;单击图中的"显示提示文字"按钮, 在按钮的下方显示一个弹出层.&lt;/li&gt;&lt;li&gt;单击任何空白区域或者弹出层,弹出层消失.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;用原始javascript我们也完全可以完成这个工作.&amp;nbsp; 有以下几点注意事项:&lt;/p&gt;&lt;p&gt;1. 弹出层的位置需要动态计算. 因为触发弹出事件的对象可能出现在页面的任何位置, 比如截图中的位置.&lt;/p&gt;&lt;p&gt;2. 为document绑定单击是关闭弹出层的函数, 要使用多播委托, 否则可能冲掉其他人在document绑定的函数.&lt;/p&gt;&lt;p&gt;3. 为document绑定了关闭函数后, 需要在显示函数中取消事件冒泡, 否则弹出层将显示后立刻关闭.&lt;/p&gt;&lt;p&gt;用jQuery, 我们可以轻松地实现此实例:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery - Start Animation&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="rem"&gt;//动画速度&lt;/span&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; speed = 500;&lt;br/&gt;&lt;br/&gt;            &lt;span class="rem"&gt;//绑定事件处理&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnShow"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="rem"&gt;//取消事件冒泡&lt;/span&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.stopPropagation();&lt;br/&gt;                &lt;span class="rem"&gt;//设置弹出层位置&lt;/span&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; offset = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset();&lt;br/&gt;                $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).css({ top: offset.top + $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).height() + &lt;span class="str"&gt;"px"&lt;/span&gt;, left: offset.left });&lt;br/&gt;                &lt;span class="rem"&gt;//动画显示&lt;/span&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).show(speed);&lt;br/&gt;&lt;br/&gt;            });&lt;br/&gt;            &lt;span class="rem"&gt;//单击空白区域隐藏弹出层&lt;/span&gt;&lt;br/&gt;            $(document).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).hide(speed) });&lt;br/&gt;            &lt;span class="rem"&gt;//单击弹出层则自身隐藏&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).hide(speed) });&lt;br/&gt;        });&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnShow"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;显示提示文字&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;br/&gt;    &lt;span class="rem"&gt;&amp;lt;!-- 弹出层 --&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divPop"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="background-color: #f0f0f0; border: solid 1px #000000; position: absolute; display:none;&lt;br/&gt;        width: 300px; height: 100px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="text-align: center;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;弹出层&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;除了实现了基本的显示和隐藏功能, &lt;strong&gt;现在显示和隐藏弹出层是渐变动画效果!&lt;/strong&gt; jQuery的动画函数如此简单, 第一次我在项目中使用时带给了我意外的惊喜. 曾经我一直为跨浏览器计算位置头痛, 但是通过jQuery的offset()函数和height()函数, 可以精确的计算弹出层的位置. 这些函数是封装好且跨浏览器的.&amp;nbsp; 需要注意要在设置弹出层位置属性的时候,加上"px", 否则在FireFox下容易出现问题.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;jQuery的动画函数主要分为三类:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;基本动画函数: 既有透明度渐变, 又有滑动效果. 是最常用的动画效果函数.&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;滑动动画函数: 仅使用滑动渐变效果.&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;淡入淡出动画函数: 仅使用透明度渐变效果.&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;这三类动画函数效果各不相同, 用法基本一致. 大家可以自己尝试.&lt;/p&gt;&lt;p&gt;另外也许上面的三类函数效果都不是我们想要的, 那么jQuery也提供了&lt;strong&gt;自定义动画函数, &lt;/strong&gt;将控制权放在我们手里让我们自己定义动画效果.&lt;/p&gt;&lt;p&gt;下面对三类内置动画函数和自定义动画函数分别讲解.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四. 基本动画函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;上例中使用的show()和hide()是我们使用最多的基本动画函数.&amp;nbsp;&lt;/p&gt;&lt;p&gt;下面是jQuery的基本动画函数:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;基本动画函数 Basics&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 789px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/show"&gt;show( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;显示隐藏的匹配元素。&lt;/p&gt;&lt;p&gt;这个就是 'show( speed, [callback] )' 无动画的版本。如果选择的元素是可见的，这个方法将不会改变任何东西。无论这个元素是通过hide()方法隐藏的还是在CSS里设置了display:none;，这个方法都将有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;显示所有段落:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;$("p").show()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/show#speedcallback"&gt;show( speed, [callback])&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;以优雅的动画显示所有匹配的元素，并在显示完成后可选地触发一个回调函数。&lt;/p&gt;&lt;p&gt;可以根据指定的速度动态地改变每个匹配元素的高度、宽度和不透明度。在jQuery 1.3中，padding和margin也会有动画，效果更流畅。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;用缓慢的动画将隐藏的段落显示出来，历时600毫秒:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").show(600);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/hide"&gt;hide( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;隐藏显示的元素&lt;/p&gt;&lt;p&gt;这个就是 'hide( speed, [callback] )' 的无动画版。如果选择的元素是隐藏的，这个方法将不会改变任何东西。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;隐藏所有段落:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;$("p").hide()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/hide#speedcallback"&gt;hide( speed, [callback] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;以优雅的动画隐藏所有匹配的元素，并在显示完成后可选地触发一个回调函数。&lt;/p&gt;&lt;p&gt;可以根据指定的速度动态地改变每个匹配元素的高度、宽度和不透明度。在jQuery 1.3中，padding和margin也会有动画，效果更流畅。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;用600毫秒的时间将段落缓慢的隐藏:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").hide("slow");&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/toggle"&gt;toggle( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;切换元素的可见状态。&lt;/p&gt;&lt;p&gt;如果元素是可见的，切换为隐藏的；如果元素是隐藏的，切换为可见的。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;切换所有段落的可见状态:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").toggle()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/toggle#switch"&gt;toggle( switch )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;根据switch参数切换元素的可见状态（ture为可见，false为隐藏）。&lt;/p&gt;&lt;p&gt;如果switch设为true，则调用show()方法来显示匹配的元素，如果switch设为false则调用hide()来隐藏元素。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;切换所有段落的可见状态:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;var flip = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("button").click(function () {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $("p").toggle( flip++ % 2 == 0 );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="244"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/toggle#speedcallback"&gt;toggle( speed, [callback] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;以优雅的动画切换所有匹配的元素，并在显示完成后可选地触发一个回调函数。&lt;/p&gt;&lt;p&gt;可以根据指定的速度动态地改变每个匹配元素的高度、宽度和不透明度。在jQuery 1.3中，padding和margin也会有动画，效果更流畅。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;用200毫秒将段落迅速切换显示状态，之后弹出一个对话框:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;$("p").toggle("fast",function(){ alert("Animation Done."); });&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 使用基本动画函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;基本的动画函数主要分为show, hide和toggle三个. 都提供了无参数的版本,&amp;nbsp; 表示不适用动画切换元素的显示状态:&lt;/p&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).show();&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).hide();&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).toggle();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;都提供了两个参数的重载,&amp;nbsp; 因为回调函数可以省略, 所以可以像开篇实例中使用的, 传入一个数值作为唯一参数, 则会在参数规定的时间内用动画效果显示/隐藏元素:&lt;/p&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).show(200);&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).hide(&lt;span class="str"&gt;"fast"&lt;/span&gt;);&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).toggle(&lt;span class="str"&gt;"slow"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;如果传递了200, 表示图层会在200毫秒内通过渐变的形式显示出来.&amp;nbsp; speed参数可以使用三种预定速度之一的字符串("slow", "normal", or "fast")或表示动画时长的毫秒数值(如：1000).&lt;/p&gt;&lt;p&gt;三个函数都可以传入回调函数callback,签名如下:&lt;/p&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; callback() {&lt;br/&gt;  &lt;span class="kwrd"&gt;this&lt;/span&gt;; &lt;span class="rem"&gt;// dom element&lt;/span&gt;&lt;br/&gt;}&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在回调函数中的this是执行此函数的DOM对象. 会在动画结束时执行.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 使用toggle函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;toggle函数是功能更强大的函数, 可以切换元素的可见状态. 我们经常遇到需要使用toggle的情况. 比如希望一段文字第一次单击显示弹出层, 第二次单击隐藏弹出层.&lt;/p&gt;&lt;p&gt;我们将开篇实例稍作修改即可实现这个效果:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Animation - Toggle &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="rem"&gt;//动画速度&lt;/span&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; speed = 500;&lt;br/&gt;&lt;br/&gt;            &lt;span class="rem"&gt;//绑定事件处理&lt;/span&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnShow"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="rem"&gt;//取消事件冒泡&lt;/span&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;event&lt;/span&gt;.stopPropagation();&lt;br/&gt;                &lt;span class="rem"&gt;//设置弹出层位置&lt;/span&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; offset = $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).offset();&lt;br/&gt;                $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).css({ top: offset.top + $(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).height() + &lt;span class="str"&gt;"px"&lt;/span&gt;, left: offset.left });&lt;br/&gt;                &lt;span class="rem"&gt;//切换弹出层的显示状态&lt;/span&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).toggle(speed);&lt;br/&gt;&lt;br/&gt;            });&lt;br/&gt;        });&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnShow"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;提示文字&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;br/&gt;    &lt;span class="rem"&gt;&amp;lt;!-- 弹出层 --&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divPop"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="background-color: #f0f0f0; border: solid 1px #000000; position: absolute; display:none;&lt;br/&gt;        width: 300px; height: 100px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="text-align: center;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;弹出层&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;toggle()函数可以传递一个boolean值的参数, 比如: toogle(true)等同于show(), toogle(fasle)等同于hide().&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五. 滑动动画函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;基本动画函数的效果是一个综合了滑动和透明度渐变的函数, jQuery还单独提供了只有滑动效果的相关函数.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;滑动动画函数&amp;nbsp; Sliding&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 790px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="280"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="246"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="280"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/slideDown#speedcallback"&gt;slideDown(speed, [callback])&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="246"&gt;&lt;p&gt;通过高度变化（向下增大）来动态地显示所有匹配的元素，在显示完成后可选地触发一个回调函数。&lt;/p&gt;&lt;p&gt;这个动画效果只调整元素的高度，可以使匹配的元素以&amp;ldquo;滑动&amp;rdquo;的方式显示出来。在jQuery 1.3中，上下的padding和margin也会有动画，效果更流畅。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;用600毫秒缓慢的将段落滑下:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").slideDown("slow");&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="280"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/slideUp#speedcallback"&gt;slideUp(speed, [callback])&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="246"&gt;通过高度变化（向上减小）来动态地隐藏所有匹配的元素，在隐藏完成后可选地触发一个回调函数。&lt;/td&gt;&lt;td valign="top" width="263"&gt;用600毫秒缓慢的将段落滑上:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").slideUp("slow");&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="280"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/slideToggle#speedcallback"&gt;slideToggle(speed, [callback])&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="246"&gt;通过高度变化来切换所有匹配元素的可见性，并在切换完成后可选地触发一个回调函数。&lt;/td&gt;&lt;td valign="top" width="263"&gt;用600毫秒缓慢的将段落滑上或滑下:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").slideToggle("slow");&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;讲解&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;slideDown就是show的滑动效果版本, slideUp就是hide的滑动效果版本, slideToggle就是toggle的滑动效果版本.&lt;/p&gt;&lt;p&gt;参数完全相同:&lt;/p&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).slideDown(200);&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).slideUp(&lt;span class="str"&gt;"fast"&lt;/span&gt;);&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).slideToggle(&lt;span class="str"&gt;"slow"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;六.淡入淡出动画函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;淡出淡出函数只提供透明度渐变的效果.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;淡入淡出函数 &lt;strong&gt;Fading&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 790px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="279"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="251"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="259"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="279"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/fadeIn#speedcallback"&gt;fadeIn( speed, [callback] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="251"&gt;&lt;p&gt;通过不透明度的变化来实现所有匹配元素的淡入效果，并在动画完成后可选地触发一个回调函数。&lt;/p&gt;&lt;p&gt;这个动画只调整元素的不透明度，也就是说所有匹配的元素的高度和宽度不会发生变化。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="259"&gt;用600毫秒缓慢的将段落淡入:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").fadeIn("slow");&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="279"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/fadeOut#speedcallback"&gt;fadeOut( speed, [callback] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="251"&gt;通过不透明度的变化来实现所有匹配元素的淡出效果，并在动画完成后可选地触发一个回调函数。&lt;/td&gt;&lt;td valign="top" width="259"&gt;用600毫秒缓慢的将段落淡出:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").fadeOut("slow");&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="279"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/fadeTo#speedopacitycallback"&gt;fadeTo(speed, opacity, [callback])&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="251"&gt;把所有匹配元素的不透明度以渐进方式调整到指定的不透明度，并在动画完成后可选地触发一个回调函数。&lt;/td&gt;&lt;td valign="top" width="259"&gt;用600毫秒缓慢的将段落的透明度调整到0.66，大约2/3的可见度:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;$("p").fadeTo("slow", 0.66);$("p").fadeTo("slow", 0.66);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;fadeIn和fadeOut两个函数对应show和hide, 用于将对象以透明度渐变的效果显示和隐藏:&lt;/p&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).fadeIn(200);&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).fadeOut(&lt;span class="str"&gt;"fast"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;透明度渐变没有切换函数.&lt;/p&gt;&lt;p&gt;需要特别讲解的是fadeTo函数. 这个函数能让对象渐变到指定的透明度上. opacity参数取值从0-1, 比如0.6表示透明度为60%.&lt;/p&gt;&lt;p&gt;和fadeIn与fadeOut不同的是, &lt;strong&gt;fadeTo函数只改变对象的透明度, 即使透明度为0对象仍然占位.&lt;/strong&gt;&amp;nbsp; 而fadeIn和fadeOut最后一定会改变对象的display属性, fadeOut后对象将从页面上消失(不占位), 但是fadeTo仅仅是让其透明(占位).&lt;/p&gt;&lt;p&gt;fadeTo函数可以配合fadeIn使用. 比如默认的情况下, fadeIn最后让对象完全显示:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_6.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_thumb_2.png" alt="image" width="244" height="118" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;但是如果之前使用过fadeTo设置弹出层的透明度, 则可以让其以半透明:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_8.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_thumb_3.png" alt="image" width="244" height="125" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;核心代码如下:&lt;/p&gt;                &lt;span class="rem"&gt;//设置弹出层的透明度&lt;/span&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).fadeTo(0, 0.66);&lt;br/&gt;&lt;br/&gt;                &lt;span class="rem"&gt;//让弹出层透明显示&lt;/span&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; ($(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).css(&lt;span class="str"&gt;"display"&lt;/span&gt;) == &lt;span class="str"&gt;"none"&lt;/span&gt;)&lt;br/&gt;                {&lt;br/&gt;                    $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).fadeIn(speed);&lt;br/&gt;                }&lt;br/&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br/&gt;                {&lt;br/&gt;                    $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).fadeOut(speed);&lt;br/&gt;                }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;用fadeTo设置了弹出层透明度后, 在使用fadeIn会让对象显示并且渐变到fadeTo设置的透明度.&lt;/p&gt;&lt;p&gt;这里介绍的仅仅是两个函数的特性, 实际应用中并不一定要两者配合使用.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六. 动画实验室&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;动画实验室是"jQuery实战"一书中的示例, 方便我们查看上面三种动画的效果. 对应源代码的 chapter7\lab.effects.html 文件.源代码在本文最后提供下载.实验室截图如下:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_10.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_13874/image_thumb_4.png" alt="image" width="686" height="454" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七.自定义动画函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;上面三个渐变动画函数已经基本满足了我们日常需求.&amp;nbsp; 但是如果我们一定要创建自己的特殊的效果, jQuery也为我们提供了相关函数.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自定义动画函数 &lt;strong&gt;Custom&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 790px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/animate#paramsdurationeasingcallback"&gt;animate( params, [duration], [easing], [callback]&amp;nbsp; )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;p&gt;用于创建自定义动画的函数。&lt;/p&gt;&lt;p&gt;这个函数的关键在于指定动画形式及结果样式属性对象。这个对象中每个属性都表示一个可以变化的样式属性（如&amp;ldquo;height&amp;rdquo;、&amp;ldquo;top&amp;rdquo;或&amp;ldquo;opacity&amp;rdquo;）。注意：所有指定的属性必须用骆驼形式，比如用marginLeft代替margin-left.&lt;/p&gt;&lt;p&gt;而每个属性的值表示这个样式属性到多少时动画结束。如果是一个数值，样式属性就会从当前的值渐变到指定的值。如果使用的是&amp;ldquo;hide&amp;rdquo;、&amp;ldquo;show&amp;rdquo;或&amp;ldquo;toggle&amp;rdquo;这样的字符串值，则会为该属性调用默认的动画形式。&lt;/p&gt;&lt;p&gt;在 jQuery 1.2 中，你可以使用 em 和 % 单位。另外，在 jQuery 1.2 中，你可以通过在属性值前面指定 "&lt;em&gt;+=&lt;/em&gt;" 或 "&lt;em&gt;-=&lt;/em&gt;" 来让元素做相对运动。&lt;/p&gt;&lt;p&gt;jQuery 1.3中，如果duration设为0则直接完成动画。而在以前版本中则会执行默认动画。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;点击按钮后div元素的几个不同属性一同变化:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;// 在一个动画中同时应用三种类型的效果&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("#go").click(function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("#block").animate({&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; width: "90%",&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; height: "100%",&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; fontSize: "10em",&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; borderWidth: 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 1000 );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/animate#paramsoptions"&gt;animate( params, options )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;p&gt;用于创建自定义动画的函数。&lt;/p&gt;&lt;p&gt;这个函数的关键在于指定动画形式及结果样式属性对象。这个对象中每个属性都表示一个可以变化的样式属性（如&amp;ldquo;height&amp;rdquo;、&amp;ldquo;top&amp;rdquo;或&amp;ldquo;opacity&amp;rdquo;）。注意：所有指定的属性必须用骆驼形式，比如用marginLeft代替margin-left.&lt;/p&gt;&lt;p&gt;而每个属性的值表示这个样式属性到多少时动画结束。如果是一个数值，样式属性就会从当前的值渐变到指定的值。如果使用的是&amp;ldquo;hide&amp;rdquo;、&amp;ldquo;show&amp;rdquo;或&amp;ldquo;toggle&amp;rdquo;这样的字符串值，则会为该属性调用默认的动画形式。&lt;/p&gt;&lt;p&gt;在 jQuery 1.2 中，你可以使用 em 和 % 单位。另外，在 jQuery 1.2 中，你可以通过在属性值前面指定 "&lt;em&gt;+=&lt;/em&gt;" 或 "&lt;em&gt;-=&lt;/em&gt;" 来让元素做相对运动。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;第一个按钮按了之后展示了不在队列中的动画。在div扩展到90%的同时也在增加字体，一旦字体改变完毕后，边框的动画才开始:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;code&gt;$("#go1").click(function(){ $("#block1").animate( { width: "90%"}, { queue: false, duration: 5000 } ) .animate( { fontSize: '10em' } , 1000 ) .animate( { borderWidth: 5 }, 1000); }); $("#go2").click(function(){ $("#block2").animate( { width: "90%"}, 1000 ) .animate( { fontSize: '10em' } , 1000 ) .animate( { borderWidth: 5 }, 1000); });&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="263"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/stop#clearQueuegotoEnd"&gt;stop( [clearQueue], [gotoEnd] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;&lt;p&gt;停止所有在指定元素上正在运行的动画。&lt;/p&gt;&lt;p&gt;如果队列中有等待执行的动画(并且clearQueue没有设为true)，他们将被马上执行&lt;/p&gt;&lt;p&gt;clearQueue&lt;em&gt;(&lt;/em&gt;Boolean):如果设置成true，则清空队列。可以立即结束动画。&lt;/p&gt;&lt;p&gt;gotoEnd&lt;em&gt; &lt;/em&gt;(Boolean):让当前正在执行的动画立即完成，并且重设show和hide的原始样式，调用回调函数等。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="263"&gt;点击Go之后开始动画,点Stop之后会在当前位置停下来:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;// 开始动画 $("#go").click(function(){ $(".block").animate({left: '+200px'}, 5000); }); // 当点击按钮后停止动画 $("#stop").click(function(){ $(".block").stop(); });&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数说明&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.params(可选)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;类型:Options&lt;/p&gt;&lt;p&gt;说明:一组包含作为动画属性和终值的样式属性和及其值的集合.&amp;nbsp;&lt;/p&gt;&lt;p&gt;讲解:通过把元素的样式属性值, 从当前值逐渐调整到params设置的值而产生动画效果.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.duration(可选)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;类型:String,Number&lt;/p&gt;&lt;p&gt;说明:三种预定速度之一的字符串("slow", "normal", or "fast")或表示动画时长的毫秒数值(如：1000)&lt;/p&gt;&lt;p&gt;讲解:动画效果持续的时间, 时间越长则变得越慢. 如果省略则不会产生动画.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.easing(可选)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;类型:String&lt;/p&gt;&lt;p&gt;说明:要使用的擦除效果的名称(需要插件支持).默认jQuery提供"linear" 和 "swing".&lt;/p&gt;&lt;p&gt;讲解:为了让元素逐渐达到params设置的最终效果,&amp;nbsp; 我们需要有一个函数来实现渐变, 这类函数就叫做easing函数. 但是需要这里传递的只是easing函数名称, 使用前需要先将easing函数注册到jQuery上.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.options参数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;类型:Options&lt;/p&gt;&lt;p&gt;说明:一组包含动画选项的值的集合。&lt;/p&gt;&lt;p&gt;讲解:所支持的属性如下:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;duration:&amp;nbsp; 与上面的duration参数相同&lt;/li&gt;&lt;li&gt;easing: 与上面的easing参数相同&lt;/li&gt;&lt;li&gt;complete :类型为Function, 在动画完成时执行的函数&lt;/li&gt;&lt;li&gt;step: &lt;a href="http://docs.jquery.com/Types#Callback"&gt;Callback&lt;/a&gt;&lt;/li&gt;&lt;li&gt;queue (Boolean): (默认值: true) 设定为false将使此动画不进入动画队列 (jQuery 1.2中新增)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;讲解&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;自定义动画属于高级应用, 在这里我暂时无法做详细的讲解.下面通过两个示例让大家简单了解如何使用自定义动画.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Bug提示:&amp;nbsp; 下面两个示例使用vsdoc2智能提示版本的jQuery类库在FireFox下存在透明度无法渐变的问题.&amp;nbsp; 请使用其他版本.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自定义坠落动画:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个示例让一个图层从屏幕最上方掉落到最下方, 并且消失.&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Animation - fadeTo &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;)&lt;br/&gt;            .animate(&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="str"&gt;"opacity"&lt;/span&gt;: &lt;span class="str"&gt;"hide"&lt;/span&gt;,&lt;br/&gt;                &lt;span class="str"&gt;"top"&lt;/span&gt;: $(window).height() - $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).height() - $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).position().top&lt;br/&gt;            },&lt;br/&gt;            600,&lt;br/&gt;            &lt;span class="kwrd"&gt;function&lt;/span&gt;() { $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).hide(); }&lt;br/&gt;            );&lt;br/&gt;        });&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;       &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divPop"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="background-color: #f0f0f0; border: solid 1px #000000; &lt;br/&gt;        width: 300px; height: 100px; position:absolute;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="text-align: center;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;弹出层&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自定义消散动画:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个示例让一个div越来越大最后消失:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Animation - fadeTo &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;)&lt;br/&gt;            .animate(&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="str"&gt;"opacity"&lt;/span&gt;: &lt;span class="str"&gt;"hide"&lt;/span&gt;,&lt;br/&gt;                &lt;span class="str"&gt;"width"&lt;/span&gt;: $(window).width()-100 ,&lt;br/&gt;                &lt;span class="str"&gt;"height"&lt;/span&gt;: $(window).height()-100&lt;br/&gt;            },&lt;br/&gt;            500&lt;br/&gt;            );&lt;br/&gt;        });&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;       &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divPop"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="background-color: #f0f0f0; border: solid 1px #000000; &lt;br/&gt;        width: 300px; height: 100px; position:absolute;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="text-align: center;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;弹出层&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.全局控制属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;最后讲一下和动画相关的属性:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;名称:&lt;/strong&gt; &lt;strong&gt;&lt;a href="http://docs.jquery.com/Effects/jQuery.fx.off"&gt;jQuery.fx.off&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值:&lt;/strong&gt; &lt;a href="http://docs.jquery.com/Types#Boolean"&gt;Boolean&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;关闭页面上所有的动画。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;把这个属性设置为true可以立即关闭所有动画(所有效果会立即执行完毕)。有些情况下可能需要这样，比如：&lt;/p&gt;&lt;p&gt;* 你在配置比较低的电脑上使用jQuery。&lt;/p&gt;&lt;p&gt;* 你的一些用户由于动画效果而遇到了 &lt;a href="http://www.jdeegan.phlegethon.org/turn_off_animation.html"&gt;可访问性问题&lt;/a&gt;&lt;/p&gt;&lt;p&gt;当把这个属性设成false之后，可以重新开启所有动画。&lt;/p&gt;&lt;p&gt;比如下面的代码会执行一个禁用的动画:&lt;/p&gt;jQuery.fx.off = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br/&gt;$(&lt;span class="str"&gt;"#divPop"&lt;/span&gt;).show(1000);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;虽然使用了动画效果的show函数, 但是因为关闭了所有动画, 所以div会立刻显示出来而没有渐变效果.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;九.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本文讲解了jQuery提供的三种动画函数:基本动画, 滑动动画和淡入淡出动画.&amp;nbsp; 使用这三种动画已经基本可以满足我们的日常开发需求, 让我们的页面动起来. 简单举例讲解了自定义动画. 对于想深入研究的人本文只能起到抛砖引玉的效果.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371796.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371796.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371782.html</id><title type="text">从零开始学习jQuery (六) jQuery中的Ajax</title><summary type="text">一.摘要本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍.本篇文章讲解如何使用jQuery方便快捷的实现Ajax功能.统一所有开发人员使用Ajax的方式.二.前言Ajax让用户页面丰富起来, 增强了用户体验. 使用Ajax是所有Web开发的必修课. 虽然Ajax技术并不复杂, 但是实现方式还是会因为每个开发人员的而有所差异.jQuery提供了一系列Ajax函数来帮助我们统一这种差异, 并且让调用Ajax更加简单.三.原始Ajax与jQuery中的Ajax首先通过实例, 来看一下jQuery实现Ajax有多简</summary><published>2012-02-28T08:46:00Z</published><updated>2012-02-28T08:46:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371782.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371782.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,&amp;nbsp; 即使你会使用jQuery也能在阅读中发现些许秘籍.&lt;/p&gt;&lt;p&gt;本篇文章讲解如何使用jQuery方便快捷的实现Ajax功能.统一所有开发人员使用Ajax的方式.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ajax让用户页面丰富起来, 增强了用户体验. 使用Ajax是所有Web开发的必修课. 虽然Ajax技术并不复杂, 但是实现方式还是会因为每个开发人员的而有所差异.jQuery提供了一系列Ajax函数来帮助我们统一这种差异, 并且让调用Ajax更加简单.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.原始Ajax与jQuery中的Ajax&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先通过实例, 来看一下jQuery实现Ajax有多简单. 下面是一个使用原始Ajax的示例:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Ajax&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; xhr = &lt;span class="kwrd"&gt;new&lt;/span&gt; AjaxXmlHttpRequest();&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjaxOld"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; xhr = &lt;span class="kwrd"&gt;new&lt;/span&gt; AjaxXmlHttpRequest();&lt;br/&gt;                xhr.onreadystatechange = &lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;                {&lt;br/&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (xhr.readyState == 4)&lt;br/&gt;                    {&lt;br/&gt;                        document.getElementById(&lt;span class="str"&gt;"divResult"&lt;/span&gt;).innerHTML = xhr.responseText;&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;                xhr.open(&lt;span class="str"&gt;"GET"&lt;/span&gt;, &lt;span class="str"&gt;"data/AjaxGetCityInfo.aspx?resultType=html"&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br/&gt;                xhr.send(&lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;        })&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;//跨浏览器获取XmlHttpRequest对象&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt; AjaxXmlHttpRequest()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; xmlHttp;&lt;br/&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="rem"&gt;// Firefox, Opera 8.0+, Safari&lt;/span&gt;&lt;br/&gt;                xmlHttp = &lt;span class="kwrd"&gt;new&lt;/span&gt; XMLHttpRequest();&lt;br/&gt;            }&lt;br/&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (e)&lt;br/&gt;            {&lt;br/&gt;&lt;br/&gt;                &lt;span class="rem"&gt;// Internet Explorer&lt;/span&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br/&gt;                {&lt;br/&gt;                    xmlHttp = &lt;span class="kwrd"&gt;new&lt;/span&gt; ActiveXObject(&lt;span class="str"&gt;"Msxml2.XMLHTTP"&lt;/span&gt;);&lt;br/&gt;                }&lt;br/&gt;                &lt;span class="kwrd"&gt;catch&lt;/span&gt; (e)&lt;br/&gt;                {&lt;br/&gt;&lt;br/&gt;                    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br/&gt;                    {&lt;br/&gt;                        xmlHttp = &lt;span class="kwrd"&gt;new&lt;/span&gt; ActiveXObject(&lt;span class="str"&gt;"Microsoft.XMLHTTP"&lt;/span&gt;);&lt;br/&gt;                    }&lt;br/&gt;                    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (e)&lt;br/&gt;                    {&lt;br/&gt;                        alert(&lt;span class="str"&gt;"您的浏览器不支持AJAX！"&lt;/span&gt;);&lt;br/&gt;                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; xmlHttp;&lt;br/&gt;        }        &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjaxOld"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;原始Ajax调用&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;上面的实例中, data/AjaxGetCityInfo.aspx?resultType=html 地址会返回一段HTML代码.&lt;/p&gt;&lt;p&gt;使用原始Ajax, 我们需要做较多的事情, 比如创建XmlHttpRequest对象,&amp;nbsp; 判断请求状态, 编写回调函数等.&lt;/p&gt;&lt;p&gt;而用jQuery的Load方法, 只需要一句话:&lt;/p&gt;$(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).load(&lt;span class="str"&gt;"data/AjaxGetCityInfo.aspx"&lt;/span&gt;, { &lt;span class="str"&gt;"resultType"&lt;/span&gt;: &lt;span class="str"&gt;"html"&lt;/span&gt; });&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;曾经我是一个原始Ajax的绝对拥护者, 甚至摒弃微软的Asp.net Ajax, 因为我想要最高的代码灵活度. 使用原始Ajax让我感觉完成自己的工作更加轻松, 即使多写了一些代码. 但是当我去翻看别人的Ajax代码并且尝试修改的时候, 我改变了我的看法--我们的代码到处分布着创建XmlHttpRequest方法的函数, 或者某些Ajax程序逻辑性和结构性很差, 很难看懂.&lt;/p&gt;&lt;p&gt;我们可以将通用方法放到一个js文件中, 然后告诉大家"嘿伙伴们, 都来用这个js中的方法". 但是在某些时候有些新来的外包人员并不知道有这个js文件的存在. 而且其实这个通用的js就是一个公共的脚本类库,&amp;nbsp; 我相信没有人会觉得自己开发一个类库会比jQuery更好!&lt;/p&gt;&lt;p&gt;所以我放弃了制造轮子的计划,&amp;nbsp; 大家都使用jQuery编写Ajax相关的方法就可以解决各种差异性问题, 并且让工作更有效率.&lt;/p&gt;&lt;p&gt;现在只是用jQuery的Ajax函数, 我的页面变得简洁了:&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Ajax&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {            &lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjaxJquery"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).load(&lt;span class="str"&gt;"data/AjaxGetCityInfo.aspx"&lt;/span&gt;, { &lt;span class="str"&gt;"resultType"&lt;/span&gt;: &lt;span class="str"&gt;"html"&lt;/span&gt; });&lt;br/&gt;            });       &lt;br/&gt;        })        &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjaxJquery"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;使用jQuery的load方法&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;四.jQuery Ajax详解&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery提供了几个用于发送Ajax请求的函数. 其中最核心也是最复杂的是&lt;a href="http://docs.jquery.com/Ajax/jQuery.ajax#options"&gt;jQuery.ajax( options )&lt;/a&gt;,所有的其他Ajax函数都是它的一个简化调用. 当我们想要完全控制Ajax时可以使用此结果, 否则还是使用简化方法如get, post, load等更加方便. 所以&lt;a href="http://docs.jquery.com/Ajax/jQuery.ajax#options"&gt;jQuery.ajax( options )&lt;/a&gt; 方法放到最后一个介绍. 先来介绍最简单的load方法:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.&amp;nbsp; &lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/load#urldatacallback"&gt;load( url, [data], [callback] )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; jQuery包装集&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;load方法能够载入远程 HTML 文件代码并插入至 DOM 中。&lt;/p&gt;&lt;p&gt;默认使用 GET 方式, 如果传递了data参数则使用Post方式.&lt;/p&gt;&lt;p&gt;- 传递附加参数时自动转换为 POST 方式。jQuery 1.2 中，可以指定选择符，来筛选载入的 HTML 文档，DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some &amp;gt; selector", 默认的选择器是"body&amp;gt;*".&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;load是最简单的Ajax函数, 但是使用具有局限性:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;它主要用于直接返回HTML的Ajax接口&lt;/li&gt;&lt;li&gt;load是一个jQuery包装集方法,需要在jQuery包装集上调用,并且会将返回的HTML加载到对象中, 即使设置了回调函数也还是会加载.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;不过不可否认load接口设计巧妙并且使用简单.下面通过示例来演示Load接口的使用:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Ajax - Load&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjaxGet"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="rem"&gt;//发送Get请求&lt;/span&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).load(&lt;span class="str"&gt;"../data/AjaxGetMethod.aspx?param=btnAjaxGet_click"&lt;/span&gt; + &lt;span class="str"&gt;"&amp;amp;timestamp="&lt;/span&gt; + (&lt;span class="kwrd"&gt;new&lt;/span&gt; Date()).getTime());&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjaxPost"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="rem"&gt;//发送Post请求&lt;/span&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).load(&lt;span class="str"&gt;"../data/AjaxGetMethod.aspx"&lt;/span&gt;, { &lt;span class="str"&gt;"param"&lt;/span&gt;: &lt;span class="str"&gt;"btnAjaxPost_click"&lt;/span&gt; });&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjaxCallBack"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="rem"&gt;//发送Post请求, 返回后执行回调函数.&lt;/span&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).load(&lt;span class="str"&gt;"../data/AjaxGetMethod.aspx"&lt;/span&gt;, { &lt;span class="str"&gt;"param"&lt;/span&gt;: &lt;span class="str"&gt;"btnAjaxCallBack_click"&lt;/span&gt; }, &lt;span class="kwrd"&gt;function&lt;/span&gt;(responseText, textStatus, XMLHttpRequest)&lt;br/&gt;                {&lt;br/&gt;                    responseText = &lt;span class="str"&gt;" Add in the CallBack Function! &amp;lt;br/&amp;gt;"&lt;/span&gt; + responseText&lt;br/&gt;                    $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(responseText); &lt;span class="rem"&gt;//或者: $(this).html(responseText);&lt;/span&gt;&lt;br/&gt;                });&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjaxFiltHtml"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="rem"&gt;//发送Get请求, 从结果中过滤掉 "鞍山" 这一项&lt;/span&gt;&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).load(&lt;span class="str"&gt;"../data/AjaxGetCityInfo.aspx?resultType=html"&lt;/span&gt; + &lt;span class="str"&gt;"&amp;amp;timestamp="&lt;/span&gt; + (&lt;span class="kwrd"&gt;new&lt;/span&gt; Date()).getTime() + &lt;span class="str"&gt;" ul&amp;gt;li:not(:contains('鞍山'))"&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;        })&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjaxGet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;使用Load执行Get请求&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjaxPost"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;使用Load执行Post请求&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjaxCallBack"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;使用带有回调函数的Load方法&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjaxFiltHtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;使用selector过滤返回的HTML内容&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt; &lt;/span&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;上面的示例演示了如何使用Load方法.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;提示:我们要时刻注意浏览器缓存,&amp;nbsp; 当使用GET方式时要添加时间戳参数 (net Date()).getTime() 来保证每次发送的URL不同, 可以避免浏览器缓存.&lt;/strong&gt;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;提示: 当在url参数后面添加了一个空格, 比如"&amp;nbsp; "的时候, 会出现"无法识别符号"的错误, 请求还是能正常发送. 但是无法加载HTML到DOM. 删除后问题解决.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype"&gt;jQuery.get( url, [data], [callback], [type] )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; XMLHttpRequest&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过远程 HTTP GET 请求载入信息。&lt;/p&gt;&lt;p&gt;这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数，请使用 $.ajax。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;此函数发送Get请求, 参数可以直接在url中拼接, 比如:&lt;/p&gt;$.get(&lt;span class="str"&gt;"../data/AjaxGetMethod.aspx?param=btnAjaxGet_click"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;或者通过data参数传递:&lt;/p&gt;$.get(&lt;span class="str"&gt;"../data/AjaxGetMethod.aspx"&lt;/span&gt;, { &lt;span class="str"&gt;"param"&lt;/span&gt;: &lt;span class="str"&gt;"btnAjaxGet2_click"&lt;/span&gt; }); &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;两种方式效果相同, data参数会自动添加到请求的url中&lt;/p&gt;&lt;p&gt;如果url中的某个参数, 又通过data参数传递, 不会自动合并相同名称的参数.&lt;/p&gt;&lt;p&gt;回调函数的签名如下:&lt;/p&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; (data, textStatus) {&lt;br/&gt;  &lt;span class="rem"&gt;// data could be xmlDoc, jsonObj, html, text, etc...&lt;/span&gt;&lt;br/&gt;  &lt;span class="kwrd"&gt;this&lt;/span&gt;; &lt;span class="rem"&gt;// the options for this ajax request&lt;/span&gt;&lt;br/&gt;}&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;其中data是返回的数据, testStatus表示状态码, 可能是如下值:&lt;/p&gt;&lt;strong&gt;"timeout","error","notmodified","success","parsererror"&lt;/strong&gt;在回调函数中的this是获取options对象的引用.有关options的各种说明, 请参见:&lt;a title="http://docs.jquery.com/Ajax/jQuery.ajax#options" href="http://docs.jquery.com/Ajax/jQuery.ajax#options"&gt;http://docs.jquery.com/Ajax/jQuery.ajax#options&lt;/a&gt; type参数是指data数据的类型, 可能是下面的值:&lt;strong&gt;"xml", "html", "script", "json", "jsonp", "text".&lt;/strong&gt;&lt;p&gt;&lt;strong&gt;默认为"html".&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback"&gt;jQuery.getJSON( url, [data], [callback] )&lt;/a&gt;&lt;/strong&gt; 方法就相当于 jQuery.get(url, [data],[callback],&lt;strong&gt; "json")&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. &lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback"&gt;jQuery.getJSON( url,&amp;nbsp; [data], [callback] )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; XMLHttpRequest&lt;/p&gt;&lt;p&gt;相当于:&amp;nbsp;&amp;nbsp; jQuery.get(url, [data],[callback],&lt;strong&gt; "json")&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过 HTTP GET 请求载入 JSON 数据。&lt;/p&gt;&lt;p&gt;在 jQuery 1.2 中，您可以通过使用&lt;a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/"&gt;JSONP&lt;/a&gt; 形式的回调函数来加载其他网域的JSON数据，如 "myurl?callback=?"。jQuery 将自动替换 ? 为正确的函数名，以执行回调函数。&lt;/p&gt;&lt;p&gt;注意：此行以后的代码将在这个回调函数执行前执行。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;getJSON函数仅仅将get函数的type参数设置为"JSON"而已. 在回调函数中获取的数据已经是按照JSON格式解析后的对象了:&lt;/p&gt;$.getJSON(&lt;span class="str"&gt;"../data/AjaxGetCityInfo.aspx"&lt;/span&gt;, { &lt;span class="str"&gt;"resultType"&lt;/span&gt;: &lt;span class="str"&gt;"json"&lt;/span&gt; }, &lt;span class="kwrd"&gt;function&lt;/span&gt;(data, textStatus)&lt;br/&gt;{&lt;br/&gt;      alert(data.length);&lt;br/&gt;      alert(data[0].CityName);&lt;br/&gt;});&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;服务器端返回的字符串如下:&lt;/p&gt;[{&lt;span class="str"&gt;""&lt;/span&gt;pkid&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;0997&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;ProvinceId&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;XJ&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;CityName&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;阿克苏&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;CityNameEn&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;Akesu&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;PostCode&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;843000&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;isHotCity&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="kwrd"&gt;false&lt;/span&gt;},&lt;br/&gt; {&lt;span class="str"&gt;""&lt;/span&gt;pkid&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;0412&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;ProvinceId&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;LN&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;CityName&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;鞍山&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;CityNameEn&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;Anshan&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;PostCode&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="str"&gt;""&lt;/span&gt;114000&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;isHotCity&lt;span class="str"&gt;""&lt;/span&gt;:&lt;span class="kwrd"&gt;false&lt;/span&gt;}]&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;示例中我返回的饿是一个数组, 使用data.length可以获取数组的元素个数,&amp;nbsp; data[0]访问第一个元素, data[0].CityName访问第一个元素的CityName属性.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/jQuery.getScript#urlcallback"&gt;jQuery.getScript( url, [callback] )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; XMLHttpRequest&lt;/p&gt;&lt;p&gt;相当于:&amp;nbsp;&amp;nbsp; jQuery.get(url, &lt;strong&gt;null&lt;/strong&gt;, [callback],&lt;strong&gt; "script")&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过 HTTP GET 请求载入并执行一个 JavaScript 文件。&lt;/p&gt;&lt;p&gt;jQuery 1.2 版本之前，getScript 只能调用同域 JS 文件。 1.2中，您可以跨域调用 JavaScript 文件。注意：Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本，请加入延时函数。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;以前我使用dojo类库时官方默认的文件不支持跨域最后导致我放弃使用dojo(虽然在网上找到了可以跨域的版本, 但是感觉不够完美).&amp;nbsp; 所以我特别对这个函数的核心实现和使用做了研究.&lt;/p&gt;&lt;p&gt;首先了解此函数的jQuery内部实现, 仍然使用get函数, jQuery所有的Ajax函数包括get最后都是用的是jQuery.ajax(), getScript将传入值为"script"的type参数,&amp;nbsp; 最后在Ajax函数中对type为script的请求做了如下处理:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; head = document.getElementsByTagName(&lt;span class="str"&gt;"head"&lt;/span&gt;)[0];            &lt;br/&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; script = document.createElement(&lt;span class="str"&gt;"script"&lt;/span&gt;);&lt;br/&gt;script.src = s.url;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;上面的代码动态建立了一个script语句块, 并且将其加入到head中:&lt;/p&gt;head.appendChild(script);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;当脚本加载完毕后, 再从head中删除:&lt;/p&gt;            &lt;span class="rem"&gt;// Handle Script loading&lt;/span&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; ( !jsonp ) {&lt;br/&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; done = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;                &lt;span class="rem"&gt;// Attach handlers for all browsers&lt;/span&gt;&lt;br/&gt;                script.onload = script.onreadystatechange = &lt;span class="kwrd"&gt;function&lt;/span&gt;(){&lt;br/&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; ( !done &amp;amp;&amp;amp; (!&lt;span class="kwrd"&gt;this&lt;/span&gt;.readyState ||&lt;br/&gt;                            &lt;span class="kwrd"&gt;this&lt;/span&gt;.readyState == &lt;span class="str"&gt;"loaded"&lt;/span&gt; || &lt;span class="kwrd"&gt;this&lt;/span&gt;.readyState == &lt;span class="str"&gt;"complete"&lt;/span&gt;) ) {&lt;br/&gt;                        done = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br/&gt;                        success();&lt;br/&gt;                        complete();&lt;br/&gt;&lt;br/&gt;                        &lt;span class="rem"&gt;// Handle memory leak in IE&lt;/span&gt;&lt;br/&gt;                        script.onload = script.onreadystatechange = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br/&gt;                        &lt;strong&gt;head.removeChild( script );&lt;/strong&gt;&lt;br/&gt;                    }&lt;br/&gt;                };&lt;br/&gt;            }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;我主要测试了此函数的跨域访问和多浏览器支持.下面是结果:&lt;/p&gt;&lt;table style="width: 756px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="175"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="80"&gt;&lt;strong&gt;IE6&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="92"&gt;&lt;strong&gt;FireFox&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="402"&gt;&lt;strong&gt;注意事项&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="175"&gt;&lt;strong&gt;非跨域引用js&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="80"&gt;通过&lt;/td&gt;&lt;td valign="top" width="92"&gt;通过&lt;/td&gt;&lt;td valign="top" width="402"&gt;回调函数中的data和textStatus均可用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="175"&gt;&lt;strong&gt;跨域引用js&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="88"&gt;通过&lt;/td&gt;&lt;td valign="top" width="96"&gt;通过&lt;/td&gt;&lt;td valign="top" width="402"&gt;回调函数中的data和textStatus均为undifined&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;下面是我关键的测试语句, 也用来演示如何使用getScript函数:&lt;/p&gt;            $(&lt;span class="str"&gt;"#btnAjaxGetScript"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $.getScript(&lt;span class="str"&gt;"../scripts/getScript.js"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(data, textStatus)&lt;br/&gt;                {&lt;br/&gt;                    alert(data);&lt;br/&gt;                    alert(textStatus);&lt;br/&gt;                    alert(&lt;span class="kwrd"&gt;this&lt;/span&gt;.url);&lt;br/&gt;                });&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjaxGetScriptCross"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $.getScript(&lt;span class="str"&gt;"http://resource.elong.com/getScript.js"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(data, textStatus)&lt;br/&gt;                {&lt;br/&gt;                    alert(data);&lt;br/&gt;                    alert(textStatus);&lt;br/&gt;                    alert(&lt;span class="kwrd"&gt;this&lt;/span&gt;.url);&lt;br/&gt;                });&lt;br/&gt;            }); &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. &lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/jQuery.post#urldatacallbacktype"&gt;jQuery.post( url, [data], [callback], [type] )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; XMLHttpRequest&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过远程 HTTP POST 请求载入信息。&lt;/p&gt;&lt;p&gt;这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数，请使用 $.ajax。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;具体用法和get相同, 只是提交方式由"GET"改为"POST".&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt; 6. &lt;a href="http://docs.jquery.com/Ajax/jQuery.ajax#options"&gt;jQuery.ajax( options )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; XMLHttpRequest&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过 HTTP 请求加载远程数据。&lt;/p&gt;&lt;p&gt;jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。&lt;/p&gt;&lt;p&gt;$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象，但特殊情况下可用于手动终止请求。&lt;/p&gt;&lt;p&gt;$.ajax() 只有一个参数：参数 key/value 对象，包含各配置及回调函数信息。详细参数选项见下。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt; 如果你指定了 dataType 选项，请确保服务器返回正确的 MIME 信息，(如 xml 返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。见 &lt;a href="http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests"&gt;Specifying the Data Type for AJAX Requests&lt;/a&gt; 。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt;如果dataType设置为"script"，那么所有的远程(不在同一域名下)的POST请求都将转化为GET请求。(因为将使用DOM的script标签来加载)&lt;/p&gt;&lt;p&gt;jQuery 1.2 中，您可以跨域加载 JSON 数据，使用时需将数据类型设置为 &lt;a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/"&gt;JSONP&lt;/a&gt;。使用 &lt;a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/"&gt;JSONP&lt;/a&gt; 形式调用函数时，如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名，以执行回调函数。数据类型设置为 "jsonp" 时，jQuery 将自动调用回调函数。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这是jQuery中Ajax的核心函数, 上面所有的发送Ajax请求的函数内部最后都会调用此函数.options参数支持很多参数, 使用这些参数可以完全控制ajax请求. 在Ajax回调函数中的this对象也是options对象.&lt;/p&gt;&lt;p&gt;因为平时使用最多的还是简化了的get和post函数, 所以在此不对options参数做详细讲解了. options参数文档请见:&lt;/p&gt;&lt;p&gt;&lt;a title="http://docs.jquery.com/Ajax/jQuery.ajax#options" href="http://docs.jquery.com/Ajax/jQuery.ajax#options"&gt;http://docs.jquery.com/Ajax/jQuery.ajax#options&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五.Ajax相关函数.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery提供了一些相关函数能够辅助Ajax函数.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. &lt;a href="http://docs.jquery.com/Ajax/jQuery.ajaxSetup#options"&gt;&lt;strong&gt;jQuery.ajaxSetup( options )&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;无返回值&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;设置全局 AJAX 默认options选项。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;有时我们的希望设置页面上所有Ajax属性的默认行为.那么就可以使用此函数设置options选项, 此后所有的Ajax请求的默认options将被更改.&lt;/p&gt;&lt;p&gt;options是一个对象, 可以设置的属性请此连接：&lt;a title="http://docs.jquery.com/Ajax/jQuery.ajax#toptions" href="http://docs.jquery.com/Ajax/jQuery.ajax#toptions"&gt;http://docs.jquery.com/Ajax/jQuery.ajax#toptions&lt;/a&gt;&lt;/p&gt;&lt;p&gt;比如在页面加载时, 我使用下面的代码设置Ajax的默认option选项:&lt;/p&gt;            $.ajaxSetup({&lt;br/&gt;                url: &lt;span class="str"&gt;"../data/AjaxGetMethod.aspx"&lt;/span&gt;,&lt;br/&gt;                data: { &lt;span class="str"&gt;"param"&lt;/span&gt;: &lt;span class="str"&gt;"ziqiu.zhang"&lt;/span&gt; },&lt;br/&gt;                global: &lt;span class="kwrd"&gt;false&lt;/span&gt;,&lt;br/&gt;                type: &lt;span class="str"&gt;"POST"&lt;/span&gt;,&lt;br/&gt;                success: &lt;span class="kwrd"&gt;function&lt;/span&gt;(data, textStatus) { $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(data); }&lt;br/&gt;            });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;上面的代码设置了一个Ajax请求需要的基本数据: 请求url, 参数, 请求类型, 成功后的回调函数.&lt;/p&gt;&lt;p&gt;此后我们可以使用无参数的get(), post()或者ajax()方法发送ajax请求.完整的示例代码如下:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Ajax - Load&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $.ajaxSetup({&lt;br/&gt;                url: &lt;span class="str"&gt;"../data/AjaxGetMethod.aspx"&lt;/span&gt;,&lt;br/&gt;                data: { &lt;span class="str"&gt;"param"&lt;/span&gt;: &lt;span class="str"&gt;"ziqiu.zhang"&lt;/span&gt; },&lt;br/&gt;                global: &lt;span class="kwrd"&gt;false&lt;/span&gt;,&lt;br/&gt;                type: &lt;span class="str"&gt;"POST"&lt;/span&gt;,&lt;br/&gt;                success: &lt;span class="kwrd"&gt;function&lt;/span&gt;(data, textStatus) { $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(data); }&lt;br/&gt;            });&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjax"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $.ajax(); });&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnGet"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $.get(); });&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnPost"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $.post(); });&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnGet2"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $.get(&lt;span class="str"&gt;"../data/AjaxGetMethod.aspx"&lt;/span&gt;,{ &lt;span class="str"&gt;"param"&lt;/span&gt;: &lt;span class="str"&gt;"other"&lt;/span&gt; }); });&lt;br/&gt;&lt;br/&gt;        });&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;  &lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjax"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;不传递参数调用ajax()方法&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnGet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;不传递参数调用get()方法&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnPost"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;不传递参数调用post()方法&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnGet2"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;传递参数调用get()方法, 使用全局的默认回调函数&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;注意当使用get()或者post()方法时, 除了type参数将被重写为"GET"或者"POST"外, 其他参数只要不传递都是使用默认的全局option. 如果传递了某一个选项, 比如最后一个按钮传递了url和参数, 则本次调用会以传递的选项为准. 没有传递的选项比如回调函数还是会使用全局option设置值.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/serialize"&gt;serialize( )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; &lt;a href="http://docs.jquery.com/Types#String"&gt;String&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;序列表表格内容为字符串，用于 Ajax 请求。&lt;/p&gt;&lt;p&gt;序列化最常用在将表单数据发送到服务器端时. 被序列化后的数据是标准格式, 可以被几乎所有的而服务器端支持.&lt;/p&gt;&lt;p&gt;为了尽可能正常工作, 要求被序列化的表单字段都有name属性, 只有一个eid是无法工作的.&lt;/p&gt;&lt;p&gt;像这样写name属性:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="email"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="email"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;serialize()函数将要发送给服务器的form中的表单对象拼接成一个字符串. 便于我们使用Ajax发送时获取表单数据. 这和一个From按照Get方式提交时, 自动将表单对象的名/值放到url上提交差不多.&lt;/p&gt;&lt;p&gt;比如这样一个表单:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryAjax_9C2A/image_2.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryAjax_9C2A/image_thumb.png" alt="image" width="223" height="124" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;生成的字符串为:&lt;tt&gt;single=Single&amp;amp;param=Multiple&amp;amp;param=Multiple3&amp;amp;check=check2&amp;amp;radio=radio1&lt;/tt&gt;&lt;/p&gt;&lt;p&gt;提示:代码见 &lt;strong&gt;chapter6\7-serialize.htm&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/serializeArray"&gt;serializeArray( )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Returns:&lt;/strong&gt; &lt;a href="http://docs.jquery.com/Types#Array"&gt;Array&lt;/a&gt;&amp;lt;&lt;a href="http://docs.jquery.com/Types#Object"&gt;Object&lt;/a&gt;&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;，此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;讲解:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;看说明文档让我有所失望, 使用此函数获取到的是JSON对象, 但是jQuery中没有提供将JSON对象转化为JSON字符串的方法.&lt;/p&gt;&lt;p&gt;在JSON官网上没有找到合适的JSON编译器, 最后选用了jquery.json这个jQuery插件:&lt;/p&gt;&lt;p&gt;&lt;a title="http://code.google.com/p/jquery-json/" href="http://code.google.com/p/jquery-json/"&gt;http://code.google.com/p/jquery-json/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;使用起来异常简单:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; thing = {plugin: &lt;span class="str"&gt;'jquery-json'&lt;/span&gt;, version: 1.3};&lt;br/&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; encoded = $.toJSON(thing);              &lt;span class="rem"&gt;//'{"plugin": "jquery-json", "version": 1.3}'&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; name = $.evalJSON(encoded).plugin;      &lt;span class="rem"&gt;//"jquery-json"&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; version = $.evalJSON(encoded).version;  // 1.3&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;使用&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/serializeArray"&gt;serializeArray( )&lt;/a&gt;&lt;/strong&gt; 再配合 &lt;strong&gt;$.toJSON&lt;/strong&gt; 方法, 我们可以很方便的获取表单对象的JSON, 并且转换为JSON字符串:&lt;/p&gt;$(&lt;span class="str"&gt;"#results"&lt;/span&gt;).html( $.toJSON( $(&lt;span class="str"&gt;"form"&lt;/span&gt;).serializeArray() ));&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;结果为:&lt;/p&gt;[{&lt;span class="str"&gt;"name"&lt;/span&gt;: &lt;span class="str"&gt;"single"&lt;/span&gt;, &lt;span class="str"&gt;"value"&lt;/span&gt;: &lt;span class="str"&gt;"Single"&lt;/span&gt;}, {&lt;span class="str"&gt;"name"&lt;/span&gt;: &lt;span class="str"&gt;"param"&lt;/span&gt;, &lt;span class="str"&gt;"value"&lt;/span&gt;: &lt;span class="str"&gt;"Multiple"&lt;/span&gt;}, {&lt;span class="str"&gt;"name"&lt;/span&gt;: &lt;span class="str"&gt;"param"&lt;/span&gt;, &lt;span class="str"&gt;"value"&lt;/span&gt;: &lt;span class="str"&gt;"Multiple3"&lt;/span&gt;}, {&lt;span class="str"&gt;"name"&lt;/span&gt;: &lt;span class="str"&gt;"check"&lt;/span&gt;, &lt;span class="str"&gt;"value"&lt;/span&gt;: &lt;span class="str"&gt;"check2"&lt;/span&gt;}, {&lt;span class="str"&gt;"name"&lt;/span&gt;: &lt;span class="str"&gt;"radio"&lt;/span&gt;, &lt;span class="str"&gt;"value"&lt;/span&gt;: &lt;span class="str"&gt;"radio1"&lt;/span&gt;}]&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六.全局Ajax事件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在&lt;a href="http://docs.jquery.com/Ajax/jQuery.ajaxSetup#options"&gt;jQuery.ajaxSetup( options )&lt;/a&gt; 中的options参数属性中, 有一个global属性:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;global&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;类型:&lt;/strong&gt;布尔值&lt;/p&gt;&lt;p&gt;&lt;strong&gt;默认值:&lt;/strong&gt; true&lt;/p&gt;&lt;p&gt;&lt;strong&gt;说明:&lt;/strong&gt;是否触发全局的Ajax事件.&lt;/p&gt;&lt;p&gt;这个属性用来设置是否触发全局的Ajax事件. 全局Ajax事件是一系列伴随Ajax请求发生的事件.主要有如下事件:&lt;/p&gt;&lt;table style="width: 737px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="378"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="354"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="427"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/ajaxComplete#callback"&gt;ajaxComplete( callback )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="354"&gt;AJAX 请求完成时执行函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="439"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/ajaxError#callback"&gt;ajaxError( callback )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="354"&gt;AJAX 请求发生错误时执行函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="441"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/ajaxSend#callback"&gt;ajaxSend( callback )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="354"&gt;AJAX 请求发送前执行函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="441"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/ajaxStart#callback"&gt;ajaxStart( callback )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="354"&gt;AJAX 请求开始时执行函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="440"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/ajaxStop#callback"&gt;ajaxStop( callback )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="354"&gt;AJAX 请求结束时执行函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="440"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Ajax/ajaxSuccess#callback"&gt;ajaxSuccess( callback )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="354"&gt;AJAX 请求成功时执行函数&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;用一个示例讲解各个事件的触发顺序:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery Ajax - AjaxEvent&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../scripts/jquery-1.3.2.min.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(document).ready(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#btnAjax"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;            {&lt;br/&gt;                $.get(&lt;span class="str"&gt;"../data/AjaxGetMethod.aspx"&lt;/span&gt;);&lt;br/&gt;            })&lt;br/&gt;&lt;br/&gt;            $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).ajaxComplete(&lt;span class="kwrd"&gt;function&lt;/span&gt;(evt, request, settings) { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div&amp;gt;ajaxComplete&amp;lt;/div&amp;gt;'&lt;/span&gt;); })&lt;br/&gt;            $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).ajaxError(&lt;span class="kwrd"&gt;function&lt;/span&gt;(evt, request, settings) { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div&amp;gt;ajaxError&amp;lt;/div&amp;gt;'&lt;/span&gt;); })&lt;br/&gt;            $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).ajaxSend(&lt;span class="kwrd"&gt;function&lt;/span&gt;(evt, request, settings) { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div&amp;gt;ajaxSend&amp;lt;/div&amp;gt;'&lt;/span&gt;); })&lt;br/&gt;            $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).ajaxStart(&lt;span class="kwrd"&gt;function&lt;/span&gt;() { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div&amp;gt;ajaxStart&amp;lt;/div&amp;gt;'&lt;/span&gt;); })&lt;br/&gt;            $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).ajaxStop(&lt;span class="kwrd"&gt;function&lt;/span&gt;() { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div&amp;gt;ajaxStop&amp;lt;/div&amp;gt;'&lt;/span&gt;); })&lt;br/&gt;            $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).ajaxSuccess(&lt;span class="kwrd"&gt;function&lt;/span&gt;(evt, request, settings) { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div&amp;gt;ajaxSuccess&amp;lt;/div&amp;gt;'&lt;/span&gt;); })&lt;br/&gt;&lt;br/&gt;        });&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br/&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnAjax"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;发送Ajax请求&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;p&gt;结果如图:&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryAjax_9C2A/image_4.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryAjax_9C2A/image_thumb_1.png" alt="image" width="218" height="154" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;我们可以通过将默认options的global属性设置为false来取消全局Ajax事件的触发.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七.注意事项&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果在Get请求发送的url中有两个同名参数, 比如两个param参数:&lt;/p&gt;&lt;p&gt;http://localhost/AjaxGetMethod.aspx?param=Multiple&amp;amp;param=Multiple3&lt;/p&gt;&lt;p&gt;使用服务器端方法获取param参数:&lt;/p&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (!String.IsNullOrEmpty(HttpContext.Current.Request[&lt;span class="str"&gt;"Param"&lt;/span&gt;]))&lt;br/&gt;        {&lt;br/&gt;            param = HttpContext.Current.Request[&lt;span class="str"&gt;"Param"&lt;/span&gt;];&lt;br/&gt;        }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;此时获取到得param是一个用","分隔多个值的字符串:&lt;/p&gt;Multiple,Multiple3&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本文介绍如何使用jquery实现Ajax功能.&amp;nbsp; 用于发送Ajax请求的相关函数如load, get, getJSON和post这些渐变Ajax方法, 对于核心的ajax 方法没有过多介绍, 主要是通过配置复杂的参数实现完全控制Ajax请求. 另外讲解了ajax的辅助函数比如用于序列化表单对象为字符串的serialize()方法, 用于将表单对象序列化为JSON对象的serializeArray()方法. 这些在使用脚本获取数据实现与服务器端交互是很有用, JSON格式的数据在处理大对象编程时将我们从混乱的属性字符串中解放出来.&lt;/p&gt;&lt;p&gt;jQuery还提供录入全局ajax事件这一个特殊的事件, 并且可以在一个对象上设置这些事件, 在发送Ajax请求的各个生命周期上会调用这些事件, 可以通过修改默认的options对象的global属性打开或关闭全局事件.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371782.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371782.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371523.html</id><title type="text">从零开始学习jQuery (五) 事件与事件对象</title><summary type="text">一.摘要事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解.二.前言本篇文章是至今为止本系列内容最多的一篇, 足以可见其重要性. 大家反映要多列举示例. 我会在时间允许的情况下尽量多列举示例. 真正的投入生产使用的实例暂时还无法加入到文章中, 但是可能最后我会列举一些作品供大家借鉴. 另外本人水平有限, 因为我不是UI设计师. 文章可能有错误的地方, 希望大家帮忙指出, 一起学习一起进步. 在技术的世界里我们是没有任何利益瓜葛. 希望大家都抱着彼此鼓励的心态, 对于回复中的激进评论我也都会考虑, 但是希望能够彼此尊重, </summary><published>2012-02-28T06:31:00Z</published><updated>2012-02-28T06:31:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371523.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371523.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本篇文章是至今为止本系列内容最多的一篇, 足以可见其重要性.&amp;nbsp; 大家反映要多列举示例. 我会在时间允许的情况下尽量多列举示例. 真正的投入生产使用的实例暂时还无法加入到文章中, 但是可能最后我会列举一些作品供大家借鉴. 另外本人水平有限, 因为我不是UI设计师. 文章可能有错误的地方, 希望大家帮忙指出, 一起学习一起进步. 在技术的世界里我们是没有任何利益瓜葛. 希望大家都抱着彼此鼓励的心态, 对于回复中的激进评论我也都会考虑, 但是希望能够彼此尊重, 保护博客园这片程序员的净土!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.事件与事件对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;曾经在我的 "&lt;a href="http://www.cnblogs.com/zhangziqiu/archive/2009/02/06/JavascriptLibrary-2.html"&gt;Javascript公共脚本库系列(二): 添加事件多播委托的方法&lt;/a&gt;" 和 "&lt;a href="http://www.cnblogs.com/zhangziqiu/archive/2009/02/13/javascriptLibrary-3.html"&gt;Javascript公共脚本库系列(三): 格式化事件对象/事件对象详解&lt;/a&gt;" 两篇文章中,&amp;nbsp; 曾讲解过javascript中的事件和事件对象.&lt;/p&gt;&lt;p&gt;首先看一下我们经常使用的添加事件的方式:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;javascript中的事件&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            document.getElementById(&lt;span class="str"&gt;"testDiv2"&lt;/span&gt;).onclick = showMsg;&lt;br/&gt;        })&lt;br/&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt; showMsg(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="str"&gt;"!!!"&lt;/span&gt;);&lt;br/&gt;        }        &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv1"&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;="showMsg();"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;单击事件 1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv2"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;单击事件 2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;我们最常使用为元素添加onclick元素属性的方式添加事件.&lt;/p&gt;&lt;p&gt;为testDiv2的添加onclick事件的方式是修改Dom属性.&lt;/p&gt;&lt;p&gt;在上一章中已经说明了什么是元素属性, 什么是Dom属性.这两种方式的效果相同. 当单击div时会显示提示框.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;请注意, 虽然效果相同, 但是并不等效. &lt;/strong&gt;&lt;/p&gt;document.getElementById(&lt;span class="str"&gt;"testDiv2"&lt;/span&gt;).onclick = showMsg;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;等效于:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv1"&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;="alert("&lt;/span&gt;!!!&lt;span class="kwrd"&gt;");"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;单击事件 1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;注意两者的区别了吗?&amp;nbsp; 我们常用的修改元素属性添加事件的方式, 实际上是建立了一个匿名函数:&lt;/p&gt;document.getElementById(&lt;span class="str"&gt;"testDiv1"&lt;/span&gt;).onclick = &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;)&lt;br/&gt;{&lt;br/&gt;    alert(&lt;span class="str"&gt;"!!!"&lt;/span&gt;);&lt;br/&gt;};&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;这个匿名函数的签名和我们手写的showMsg签名相同, 所以可以把showMsg直接赋值给onclick.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;这种方式的弊端是:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 只能为一个事件绑定一个事件处理函数.&amp;nbsp; 使用"="赋值会把前面为此时间绑定的所有事件处理函数冲掉.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 在事件函数(无论是匿名函数还是绑定的函数)中获取事件对象的方式在不同浏览器中要特殊处理:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;IE中,事件对象是window对象的一个属性.事件处理函数必须这样访问事件对象:&lt;/p&gt;        obj.onclick=&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; oEvent = window.&lt;span class="kwrd"&gt;event&lt;/span&gt;;&lt;br/&gt;        }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;在DOM标准中,事件对象必须作为唯一参数传给事件处理函数:&lt;/p&gt;        obj.onclick=&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; oEvent = arguments[0];&lt;br/&gt;        }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;除了使用argument[0]访问此参数, 我们也可以指定参数名称,上面的代码等同于:&lt;/p&gt;        obj.onclick=&lt;span class="kwrd"&gt;function&lt;/span&gt;(oEvent)&lt;br/&gt;        {&lt;br/&gt;            &lt;br/&gt;        }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;目前兼容DOM的浏览器有Firefox,Safari,Opera,IE7等.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. 添加多播委托的函数在不同浏览器中是不一样的.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面是在"&lt;a href="http://www.cnblogs.com/zhangziqiu/archive/2009/02/06/JavascriptLibrary-2.html"&gt;Javascript公共脚本库系列(二): 添加事件多播委托的方法&lt;/a&gt;"文章中,&amp;nbsp; 提供的兼容多浏览器添加多播委托的方法:&lt;/p&gt;&lt;span class="rem"&gt;//统一的为对象添加多播事件委托的方法&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;/*  &lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    参数说明:&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    oTarget     : 要添加事件的对象.比如"document".&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    sEventType  : 事件类型.比如单击事件"click".&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    fnHandler   : 发生事件时调用的方法. 比如一个静态函数"hideCalendar"&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="rem"&gt;    使用举例:&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    //单击页面的任何元素,只要没有取消冒泡,都可以关闭日历控件&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    var cf = document.getElementById("CalFrame");&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    if( cf != null &amp;amp;&amp;amp; hideCalendar != null )&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    {&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;        ScriptHelper.addEventListener( document, "click", hideCalendar );&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;    }&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;*/&lt;/span&gt;&lt;br/&gt;scriptHelper.prototype.addEventListener = &lt;span class="kwrd"&gt;function&lt;/span&gt;(oTarget, sEventType, fnHandler)&lt;br/&gt;{&lt;br/&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt;( oTarget.addEventListener )&lt;span class="rem"&gt;//for dom&lt;/span&gt;&lt;br/&gt;    {&lt;br/&gt;        oTarget.addEventListener( sEventType, fnHandler, &lt;span class="kwrd"&gt;false&lt;/span&gt; )&lt;br/&gt;    }&lt;br/&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;( oTarget.attachEvent )&lt;span class="rem"&gt;//for ie&lt;/span&gt;&lt;br/&gt;    {&lt;br/&gt;        oTarget.attachEvent( &lt;span class="str"&gt;"on"&lt;/span&gt; + sEventType, fnHandler);&lt;br/&gt;    }&lt;br/&gt;}&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;所以我们首先应该摒弃&amp;lt;div onclick="..."&amp;gt;&amp;lt;/div&amp;gt;这种通过修改元素属性添加事件的方式. 尽量使用添加多播事件委托的方式为一个事件绑定多个事件处理函数, 比如为document对象的单击事件添加一个关闭弹出层的方法, 使用多播就不会影响document对象原有的事件处理函数.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四. jQuery中的事件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;有了jQuery,&amp;nbsp; 我们有了处理对象事件的一系列函数.&amp;nbsp; 上面基础知识还是要懂, 但是再也不用自己去实现处理多播事件委托的函数了.&amp;nbsp; 正所谓有了jQuery, 天天喝茶水. 下面是在jQuery中最常使用的bind()方法举例:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv4"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, showMsg);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;我们为id是testDiv4的元素, 添加列click事件的事件处理函数showMsg.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用jQuery事件处理函数的好处:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 添加的是多播事件委托.&amp;nbsp; 也就是为click事件又添加了一个方法, 不会覆盖对象的click事件原有的事件处理函数.&lt;/strong&gt;&lt;/p&gt;            $(&lt;span class="str"&gt;"#testDiv4"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { alert(&lt;span class="str"&gt;"one"&lt;/span&gt;); });&lt;br/&gt;            $(&lt;span class="str"&gt;"#testDiv4"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { alert(&lt;span class="str"&gt;"two"&lt;/span&gt;); });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;单击testDiv4对象时, 依次提示"one"和"two".&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 统一了事件名称.&lt;/strong&gt;&amp;nbsp; 添加多播事件委托时, ie中是事件名称前面有"on". 但是使用bind()函数我们不用区分ie和dom ,&amp;nbsp; 因为内部jQuery已经帮我们统一了事件的名称.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. 可以将对象行为全部用脚本控制.&lt;/strong&gt; 让HTML代码部分只注意"显示"逻辑. 现在的趋势是将HTML的行为, 内容与样式切分干净. 其中用脚本控制元素行为, 用HTML标签控制元素内容, 用CSS控制元素样式. 使用jQuery事件处理函数可以避免在HTML标签上直接添加事件.&lt;/p&gt;&lt;p&gt;下面是基础的jQuery事件处理函数:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;事件处理&amp;nbsp; Event Handling:&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 798px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="326"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/bind#typedatafn"&gt;bind( type, [data], fn )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;为每一个匹配元素的特定事件（像click）绑定一个事件处理器函数。&lt;/td&gt;&lt;td valign="top" width="326"&gt;当每个段落被点击的时候，弹出其文本:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").bind("click", function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; alert( $(this).text() );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/one#typedatafn"&gt;one( type, [data], fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;为每一个匹配元素的特定事件（像click）绑定一个&lt;em&gt;一次性&lt;/em&gt;的事件处理函数。&lt;/td&gt;&lt;td valign="top" width="326"&gt;当所有段落被第一次点击的时候，显示所有其文本:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").one("click", function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; alert( $(this).text() );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/trigger#eventdata"&gt;trigger( event, [data] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;在每一个匹配的元素上触发某类事件。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;这个函数也会导致浏览器同名的默认行为的执行。比如，如果用trigger()触发一个'submit'，则同样会导致浏览器提交表单。如果要阻止这种默认行为，应返回false。&lt;/p&gt;&lt;p&gt;你也可以触发由bind()注册的自定义事件&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="326"&gt;给一个事件传递参数:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").click( function (event, a, b) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // 一个普通的点击事件时，a和b是undefined类型&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // 如果用下面的语句触发，那么a指向"foo",而b指向"bar"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } ).trigger("click", ["foo", "bar"]);&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/triggerHandler#eventdata"&gt;triggerHandler( event, [data] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但&lt;strong&gt;不会执行&lt;/strong&gt;浏览器默认动作.&lt;/td&gt;&lt;td valign="top" width="326"&gt;如果你对一个focus事件执行了 .triggerHandler() ，浏览器默认动作将不会被触发，只会触发你绑定的动作:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("#old").click(function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $("input").trigger("focus");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("#new").click(function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $("input").triggerHandler("focus");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input").focus(function(){&amp;nbsp;&amp;nbsp; $("&amp;lt;span&amp;gt;Focused!&amp;lt;/span&amp;gt;").appendTo("body").fadeOut(1000); });&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/unbind#typefn"&gt;unbind( type, fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;bind()的反向操作，从每一个匹配的元素中删除绑定的事件。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;如果没有参数，则删除所有绑定的事件。&lt;/p&gt;&lt;p&gt;你可以将你用bind()注册的自定义事件取消绑定。&lt;/p&gt;&lt;p&gt;如果提供了事件类型作为参数，则只删除该类型的绑定事件。&lt;/p&gt;&lt;p&gt;如果把在绑定时传递的处理函数作为第二个参数，则只有这个特定的事件处理函数会被删除。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="326"&gt;把所有段落的所有事件取消绑定:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").unbind()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;将段落的click事件取消绑定:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").unbind( "click" )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;删除特定函数的绑定，将函数作为第二个参数传入:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;var foo = function () {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // 处理某个事件的代码&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").bind("click", foo); // ... 当点击段落的时候会触发 foo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").unbind("click", foo); // ... 再也不会被触发 foo&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五.常用事件函数举例&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/bind#typedatafn"&gt;bind( type, [data], fn )&lt;/a&gt; 函数举例&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;bind()是最常使用的函数,&amp;nbsp; 注意方法签名上data参数, 可以在事件处理之前传递一些附加的数据:&lt;/p&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; handler(&lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;br/&gt;  alert(&lt;span class="kwrd"&gt;event&lt;/span&gt;.data.foo);&lt;br/&gt;}&lt;br/&gt;$(&lt;span class="str"&gt;"p"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, {foo: &lt;span class="str"&gt;"bar"&lt;/span&gt;}, handler) &lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;注意event参数的使用. jQuery中统一了事件对象, 将事件对象作为事件处理函数的唯一参数传递.&lt;/p&gt;&lt;p&gt;data参数我们也要通过event.data 进行访问.&amp;nbsp; 为何要提供data参数呢?&lt;/p&gt;&lt;p&gt;因为我们经常碰到这样的问题: 希望在事件处理中根据事件源的某些数据进行特殊处理.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;目前网上有两种存在争议的解决方法:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1) 使用自定义元素属性存储数据.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;比如:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv5"&lt;/span&gt; &lt;span class="attr"&gt;customer&lt;/span&gt;&lt;span class="kwrd"&gt;="customer data 1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;获取自定义数据-1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;在事件处理函数中获取数据:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv5"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { alert($(&lt;span class="kwrd"&gt;event&lt;/span&gt;.target).attr(&lt;span class="str"&gt;"customer"&lt;/span&gt;)); });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;attr函数是上一讲中的知识, 用于获取元素的"元素属性", 而且可以获取自定义的元素属性. 单击div后将显示:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_2.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_thumb.png" alt="image" width="244" height="166" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) 使用脚本将数据传递给事件处理函数:&lt;/strong&gt;&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv6"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;获取自定义数据-2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;p&gt;元素没有任何的自定义属性, 添加事件处理函数时将额外的数据传递:&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;$(&lt;span class="str"&gt;"#testDiv6"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, { customer: &lt;span class="str"&gt;"customer data 2"&lt;/span&gt; }, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { alert(&lt;span class="kwrd"&gt;event&lt;/span&gt;.data.customer) });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;点击div后的结果和方法1相同:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_4.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_thumb_1.png" alt="image" width="244" height="183" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;方法1便于存储和查找数据. 但是自定义属性通过不W3C验证.&lt;/p&gt;&lt;p&gt;方法2必须要自己想办法存储数据, 并且要制定规则查找指定元素的数据.&lt;/p&gt;&lt;p&gt;从"开发人员"的角度方法1要更加简单直观. 但是缺点比较严重. 所以如何取舍请大家自己决定.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/one#typedatafn"&gt;one( type, [data], fn )&lt;/a&gt;&lt;/strong&gt; 函数和bind一样, 但是只执行一次.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. &lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/trigger#eventdata"&gt;trigger( event, [data] )&lt;/a&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/triggerHandler#eventdata"&gt;triggerHandler( event, [data] )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;虽然为元素绑定了某些事件, 比如click, 但是有时希望在程序中触发这些事件,&amp;nbsp; 这两个函数可以实现此功能.&lt;/p&gt;&lt;p&gt;主要区别是trigger会出发浏览器默认的动作, 而triggerHandler不会出发.&lt;/p&gt;&lt;p&gt;通过下面的实例可以明确的区分这两个函数:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery事件处理:trigger和triggerHandler示例&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $(&lt;span class="str"&gt;"#old"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(&lt;span class="str"&gt;""&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"input"&lt;/span&gt;).trigger(&lt;span class="str"&gt;"focus"&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;            $(&lt;span class="str"&gt;"#new"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;            {&lt;br/&gt;                $(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;).html(&lt;span class="str"&gt;""&lt;/span&gt;);&lt;br/&gt;                $(&lt;span class="str"&gt;"input"&lt;/span&gt;).triggerHandler(&lt;span class="str"&gt;"focus"&lt;/span&gt;);&lt;br/&gt;            });&lt;br/&gt;            $(&lt;span class="str"&gt;"input"&lt;/span&gt;).focus(&lt;span class="kwrd"&gt;function&lt;/span&gt;() { $(&lt;span class="str"&gt;"&amp;lt;span&amp;gt;Focused!&amp;lt;/span&amp;gt;"&lt;/span&gt;).appendTo(&lt;span class="str"&gt;"#divResult"&lt;/span&gt;); });&lt;br/&gt;        })&lt;br/&gt;        &lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="old"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        .trigger("focus")&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="new"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        .triggerHandler("focus")&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="To Be Focused"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;当单击".trigger"按钮时, 会调用两次Focesed, 并且input元素获得了焦点:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_10.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_thumb_4.png" alt="image" width="358" height="133" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;单击".triggerHandler"按钮时, 只调用一次,并且input元素没有获得焦点:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_8.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_thumb_3.png" alt="image" width="371" height="121" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;也就是说, trigger函数出发了浏览器默认的获取焦点的行为,让input元素获得了焦点, 所以再次调用了focus事件处理函数.&lt;/p&gt;&lt;p&gt;triggerHandler只调用为focus事件绑定的事件处理函数, 而不引发浏览器行为, 所以最后input元素没有获得焦点.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六.快捷事件 &lt;strong&gt;Event Helpers&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;BUG提示:&lt;/strong&gt;&lt;strong&gt;jquery-1.3.2-vsdoc2.js 这个最新的官方带智能提示的类库, 无法使用快捷事件, 比如click(), focus(). 使用其他版本的类库则没有问题.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;虽然我们可以使用事件处理函数完成对象事件的几乎所有操作, 但是jQuery提供了对常用事件的封装. 比如单击事件对应的两个方法click()和click(fn)分别用来触发单击事件和设置单击事件.&lt;/p&gt;&lt;p&gt;设置单击事件:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).click(&lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { alert(&lt;span class="str"&gt;"test div clicked ! "&lt;/span&gt;); });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;等效于:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { alert(&lt;span class="str"&gt;"test div clicked ! "&lt;/span&gt;); });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;触发单击事件:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).click();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;等效于&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).trigger(&lt;span class="str"&gt;"click"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;注意这里等效的是trigger而不是triggerHandler.&lt;/p&gt;&lt;p&gt;此类方法在jQuery中英文叫做Event Helpers, 我找不到很好的翻译方式, 所以按照功能称其为"快捷方法",&amp;nbsp; 征集好的翻译名称!&lt;/p&gt;&lt;p&gt;下面是jQuery的快捷方法列表:&lt;/p&gt;&lt;p&gt;由于都是都是对应的事件, 所以不再写说明和举例了.&lt;/p&gt;&lt;table style="width: 788px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/blur"&gt;blur( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/blur#fn"&gt;blur( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/change"&gt;change( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/change#fn"&gt;change( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/click"&gt;click( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/click#fn"&gt;click( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/dblclick"&gt;dblclick( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/dblclick#fn"&gt;dblclick( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/error"&gt;error( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/error#fn"&gt;error( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/focus"&gt;focus( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/focus#fn"&gt;focus( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/keydown"&gt;keydown( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/keydown#fn"&gt;keydown( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/keypress"&gt;keypress( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/keypress#fn"&gt;keypress( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/keyup"&gt;keyup( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/keyup#fn"&gt;keyup( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/load#fn"&gt;load( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/mousedown#fn"&gt;mousedown( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/mouseenter#fn"&gt;mouseenter( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/mouseleave#fn"&gt;mouseleave( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/mousemove#fn"&gt;mousemove( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/mouseout#fn"&gt;mouseout( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/mouseover#fn"&gt;mouseover( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/mouseup#fn"&gt;mouseup( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/resize#fn"&gt;resize( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/scroll#fn"&gt;scroll( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/select"&gt;select( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/select#fn"&gt;select( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/submit"&gt;submit( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/submit#fn"&gt;submit( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/unload#fn"&gt;unload( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="316"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七. 交互帮助方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;除了基本的实践, jQuery提供了两个和事件相关的帮助方法: &lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/hover#overout"&gt;hover( over, out )&lt;/a&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/toggle#fnfn2fn3.2Cfn4.2C..."&gt;toggle( fn, fn2, fn3,fn4,... )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. &lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/hover#overout"&gt;hover( over, out )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;hover函数主要解决在原始javascript中mouseover和mouseout函数存在的问题, 看下面这个示例:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_14.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_thumb_6.png" alt="image" width="244" height="227" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;有两个div(红色区域), 里面分别嵌套了一个div(黄色区域). HTML代码如下:&lt;/p&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="outer"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="outer1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;      Outer 1&lt;br/&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="inner"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="inner1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Inner 1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="outer"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="outer2"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;      Outer 2&lt;br/&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="inner"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="inner2"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Inner 2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="console"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;绑定如下事件:&lt;/p&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;      &lt;span class="kwrd"&gt;function&lt;/span&gt; report(&lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;br/&gt;        $(&lt;span class="str"&gt;'#console'&lt;/span&gt;).append(&lt;span class="str"&gt;'&amp;lt;div&amp;gt;'&lt;/span&gt;+&lt;span class="kwrd"&gt;event&lt;/span&gt;.type+&lt;span class="str"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;);&lt;br/&gt;      }&lt;br/&gt;&lt;br/&gt;      $(&lt;span class="kwrd"&gt;function&lt;/span&gt;(){&lt;br/&gt;        $(&lt;span class="str"&gt;'#outer1'&lt;/span&gt;)&lt;br/&gt;         .bind(&lt;span class="str"&gt;'mouseover'&lt;/span&gt;,report)&lt;br/&gt;         .bind(&lt;span class="str"&gt;'mouseout'&lt;/span&gt;,report);&lt;br/&gt;        $(&lt;span class="str"&gt;'#outer2'&lt;/span&gt;).hover(report,report);&lt;br/&gt;      });&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;Outer1我们使用了mouseover和mouseout事件,&amp;nbsp; 当鼠标从Outer1的红色区域移动到黄色区域时, 会发现虽然都是在outer1的内部移动, 但是却触发了mouseout事件:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_16.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_thumb_7.png" alt="image" width="255" height="311" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;很多时候我们不希望出现上图的结果,&amp;nbsp; 而是希望只有鼠标在Outer1内部移动时不触发事件, Outer2使用Hover()函数实现了这个效果:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_18.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_906B/image_thumb_8.png" alt="image" width="261" height="199" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;注意这里的事件名称进入叫做"mouseenter", 离开叫做"mouseleave", 而不再使用"mouseover"和"mouseleave"事件.&lt;/p&gt;&lt;p&gt;有经验的开发人员会立刻想到在制作弹出菜单时, 经常遇到这个问题: 为弹出菜单设置了mouseout事件自动关闭, 但是鼠标在弹出菜单内移动时常常莫名其妙触发mouseout事件让菜单关闭. hover()函数帮助我们很好的解决了这个问题.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. &lt;strong&gt;&lt;a href="http://docs.jquery.com/Events/toggle#fnfn2fn3.2Cfn4.2C..."&gt;toggle( fn, fn2, fn3,fn4,... )&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;toggle函数可以为对象添加click事件绑定函数,&amp;nbsp; 但是设置每次点击后依次的调用函数。&lt;/p&gt;&lt;p&gt;如果点击了一个匹配的元素，则触发指定的第一个函数，当再次点击同一元素时，则触发指定的第二个函数，如果有更多函数，则再次触发，直到最后一个。随后的每次点击都重复对这几个函数的轮番调用。&lt;/p&gt;&lt;p&gt;可以使用unbind("click")来删除。&lt;/p&gt;&lt;p&gt;下面的示例演示如何使用toggle函数:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;HTML&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD HTML 4.01//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/html4/strict.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;toggle example&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="css/hover.css"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            $(&lt;span class="str"&gt;"li"&lt;/span&gt;).toggle(&lt;br/&gt;              &lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;              {&lt;br/&gt;                  $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).css({ &lt;span class="str"&gt;"list-style-type"&lt;/span&gt;: &lt;span class="str"&gt;"disc"&lt;/span&gt;, &lt;span class="str"&gt;"color"&lt;/span&gt;: &lt;span class="str"&gt;"blue"&lt;/span&gt; });&lt;br/&gt;              },&lt;br/&gt;              &lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;              {&lt;br/&gt;                  $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).css({ &lt;span class="str"&gt;"list-style-type"&lt;/span&gt;: &lt;span class="str"&gt;"square"&lt;/span&gt;, &lt;span class="str"&gt;"color"&lt;/span&gt;: &lt;span class="str"&gt;"red"&lt;/span&gt; });&lt;br/&gt;              },&lt;br/&gt;              &lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;              {&lt;br/&gt;                  $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).css({ &lt;span class="str"&gt;"list-style-type"&lt;/span&gt;: &lt;span class="str"&gt;"none"&lt;/span&gt;, &lt;span class="str"&gt;"color"&lt;/span&gt;: &lt;span class="str"&gt;""&lt;/span&gt; });&lt;br/&gt;              }&lt;br/&gt;            );&lt;br/&gt;        })&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ul&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="cursor:pointer"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;click me&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ul&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;结果是每点击一次"click me"变换一次列表符号和文字颜色.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.使用jQuery事件对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用事件自然少不了事件对象.&amp;nbsp; 因为不同浏览器之间事件对象的获取, 以及事件对象的属性都有差异, 导致我们很难跨浏览器使用事件对象.&lt;/p&gt;&lt;p&gt;jQuery中统一了事件对象,&amp;nbsp; 当绑定事件处理函数时,&amp;nbsp; 会将jQuery格式化后的事件对象作为唯一参数传入:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) {  });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;关于event对象的详细说明, 可以参考jQuery官方文档: &lt;a title="http://docs.jquery.com/Events/jQuery.Event" href="http://docs.jquery.com/Events/jQuery.Event"&gt;http://docs.jquery.com/Events/jQuery.Event&lt;/a&gt;&lt;/p&gt;&lt;p&gt;jQuery事件对象将不同浏览器的差异进行了合并, 比如可以在所有浏览器中通过 event.target 属性来获取事件的触发者(在IE中使用原生的事件对象, 需要访问event.srcElement).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;下面是jQuery事件对象可以在扩浏览器支持的属性:&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 780px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;属性名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;描述&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="308"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;type&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;事件类型.如果使用一个事件处理函数来处理多个事件, 可以使用此属性获得事件类型,比如click.&lt;/td&gt;&lt;td valign="top" width="308"&gt;$("a").click(function(event) {&lt;br/&gt;  alert(event.type);&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;target&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;获取事件触发者DOM对象&lt;/td&gt;&lt;td valign="top" width="308"&gt;$("a[href=http://google.com]").click(function(event) {&lt;br/&gt;  alert(event.target.href);&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;data&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;事件调用时传入额外参数.&lt;/td&gt;&lt;td valign="top" width="308"&gt;$("a").each(function(i) {&lt;br/&gt;  $(this).bind('click', {index:i}, function(e){&lt;br/&gt;     alert('my index is ' + e.data.index);&lt;br/&gt;  });&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;relatedTarget&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;对于鼠标事件, 标示触发事件时离开或者进入的DOM元素&lt;/td&gt;&lt;td valign="top" width="308"&gt;$("a").mouseout(function(event) {&lt;br/&gt;  alert(event.relatedTarget);&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;currentTarget&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;冒泡前的当前触发事件的DOM对象, 等同于this.&lt;/td&gt;&lt;td valign="top" width="308"&gt;$("p").click(function(event) {&lt;br/&gt;  alert( event.currentTarget.nodeName );&lt;br/&gt;});结果:P&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;pageX/Y&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;鼠标事件中, 事件相对于页面原点的水平/垂直坐标.&lt;/td&gt;&lt;td valign="top" width="308"&gt;$("a").click(function(event) {&lt;br/&gt;  alert("Current mouse position: " + event.pageX + ", " + event.pageY );&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;result&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;上一个事件处理函数返回的值&lt;/td&gt;&lt;td valign="top" width="308"&gt;$("p").click(function(event) {&lt;br/&gt;  return "hey"&lt;br/&gt;});&lt;br/&gt;$("p").click(function(event) {&lt;br/&gt;  alert( event.result );&lt;br/&gt;});结果:"hey"&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;timeStamp&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;事件发生时的时间戳.&lt;/td&gt;&lt;td valign="top" width="308"&gt;var last;&lt;br/&gt;$("p").click(function(event) {&lt;br/&gt;   if( last )&lt;br/&gt;      alert( "time since last event " + event.timeStamp - last );&lt;br/&gt;   last = event.timeStamp;&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;上面是jQuery官方文档中提供的event对象的属性. 在"jQuery实战"一书中还提供了下面的多浏览器支持的属性, 时间关系我没有尝试每一个属性, 大家可以帮忙验证是否在所有浏览器下可用:&lt;/p&gt;&lt;table style="width: 776px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;属性名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="259"&gt;&lt;strong&gt;描述&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="278"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;altKey&lt;/td&gt;&lt;td valign="top" width="259"&gt;Alt键是否被按下. 按下返回true&lt;/td&gt;&lt;td valign="top" width="278"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;ctrlKey&lt;/td&gt;&lt;td valign="top" width="259"&gt;ctrl键是否被按下, 按下返回true&lt;/td&gt;&lt;td valign="top" width="278"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;metaKey&lt;/td&gt;&lt;td valign="top" width="259"&gt;Meta键是否被按下, 按下返回true.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; meta键就是PC机器的Ctrl键,或者Mac机器上面的Command键&lt;/td&gt;&lt;td valign="top" width="278"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;shiftKey&lt;/td&gt;&lt;td valign="top" width="259"&gt;Shift键是否被按下, 按下返回true&lt;/td&gt;&lt;td valign="top" width="278"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;keyCode&lt;/td&gt;&lt;td valign="top" width="259"&gt;对于keyup和keydown事件返回被按下的键. 不区分大小写, a和A都返回65.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;对于keypress事件请使用which属性, 因为which属性跨浏览时依然可靠.&lt;/td&gt;&lt;td valign="top" width="278"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;which&lt;/td&gt;&lt;td valign="top" width="259"&gt;对于键盘事件, 返回触发事件的键的数字编码. 对于鼠标事件, 返回鼠标按键号(1左,2中,3右).&lt;/td&gt;&lt;td valign="top" width="278"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;screenX/Y&lt;/td&gt;&lt;td valign="top" width="259"&gt;对于鼠标事件, 获取事件相对于屏幕原点的水平/垂直坐标&lt;/td&gt;&lt;td valign="top" width="278"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;事件对象除了拥有属性, 还拥有事件. 有一些是一定会用到的事件比如取消冒泡 stopPropagation() 等.下面是jQuery事件对象的函数列表:&lt;/p&gt;&lt;table style="width: 776px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="297"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;p&gt;&lt;strong&gt;preventDefault()&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;取消可能引起任何语意操作的事件. 比如&amp;lt;a&amp;gt;元素的href链接加载, 表单提交以及click引起复选框的状态切换.&lt;/td&gt;&lt;td valign="top" width="297"&gt;$("a").click(function(event){&lt;br/&gt;  event.preventDefault();&lt;br/&gt;  // do something&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;p&gt;&lt;strong&gt;isDefaultPrevented()&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;是否调用过&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;&lt;strong&gt;preventDefault()&lt;/strong&gt;&lt;/p&gt;方法&lt;/td&gt;&lt;td valign="top" width="297"&gt;$("a").click(function(event){&lt;br/&gt;  alert( event.isDefaultPrevented() );&lt;br/&gt;  event.preventDefault();&lt;br/&gt;  alert( event.isDefaultPrevented() );&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;p&gt;&lt;strong&gt;stopPropagation()&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;取消事件冒泡&lt;/td&gt;&lt;td valign="top" width="297"&gt;$("p").click(function(event){&lt;br/&gt;  event.stopPropagation();&lt;br/&gt;  // do something&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;p&gt;&lt;strong&gt;isPropagationStopped()&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;是否调用过&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;&lt;strong&gt;stopPropagation()&lt;/strong&gt;&lt;/p&gt;方法&lt;/td&gt;&lt;td valign="top" width="297"&gt;$("p").click(function(event){&lt;br/&gt;  alert( event.isPropagationStopped() );&lt;br/&gt;  event.stopPropagation();&lt;br/&gt;  alert( event.isPropagationStopped() );&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;p&gt;&lt;strong&gt;stopImmediatePropagation()&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;取消执行其他的事件处理函数并取消事件冒泡.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;如果同一个事件绑定了多个事件处理函数, 在其中一个事件处理函数中调用此方法后将不会继续调用其他的事件处理函数.&lt;/td&gt;&lt;td valign="top" width="297"&gt;$("p").click(function(event){&lt;br/&gt;  event.stopImmediatePropagation();&lt;br/&gt;});&lt;br/&gt;$("p").click(function(event){&lt;br/&gt;  // This function won't be executed&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;p&gt;&lt;strong&gt;isImmediatePropagationStopped()&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;是否调用过&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;&lt;strong&gt;stopImmediatePropagation()&lt;/strong&gt;&lt;/p&gt;方法&lt;/td&gt;&lt;td valign="top" width="297"&gt;$("p").click(function(event){&lt;br/&gt;  alert( event.isImmediatePropagationStopped() );&lt;br/&gt;  event.stopImmediatePropagation();&lt;br/&gt;  alert( event.isImmediatePropagationStopped() );&lt;br/&gt;});&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;这些函数中&amp;nbsp; stopPropagation()&amp;nbsp; 是我们最长用的也是一定会用到的函数. 相当于操作原始event对象的event.cancelBubble=true来取消冒泡.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;九. 总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;事件是javascript的灵魂, 我花了很久写这篇文章,翻译jQuery官方的API文档. 列表中的很多例子直接从官网上摘抄的,&amp;nbsp; 有些列表中的方法我也没有用过, 所以如果大家发现问题请及时通知我修改.&lt;/p&gt;&lt;p&gt;接下来的文章将分别讲解Ajax和动画效果.&amp;nbsp; 最后通过讲解两个我修改的jQuery插件来学习jQuery的插件开发.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371523.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371523.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371488.html</id><title type="text">从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式</title><summary type="text">一.摘要本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得大家学习.二.前言通过前面几章我们已经能够完全控制jQuery包装集了, 无论是通过选择器选取对象, 或者从包装集中删除,过滤元素. 本章将讲解如何使用jQuery获取和修改元素属性和样式.三. 区分DOM属性和元素属性一个img标签:&lt;img src="images/image.1.jpg" id="hibiscus" alt="Hibiscus" class="classA" /&gt;通常开发人</summary><published>2012-02-28T06:12:00Z</published><updated>2012-02-28T06:12:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371488.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371488.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本篇文章讲解如何使用jQuery获取和操作元素的属性和CSS样式. 其中DOM属性和元素属性的区分值得大家学习.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过前面几章我们已经能够完全控制jQuery包装集了,&amp;nbsp; 无论是通过选择器选取对象, 或者从包装集中删除,过滤元素. 本章将讲解如何使用jQuery获取和修改元素属性和样式.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三. 区分DOM属性和元素属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一个img标签:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="images/image.1.jpg"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="hibiscus"&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;="Hibiscus"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="classA"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;通常开发人员习惯将id, src, alt等叫做这个元素的"属性". 我将其称为"元素属性". 但是在解析成DOM对象时, 实际浏览器最后会将标签元素解析成"DOM对象", 并且将元素的"元素属性"存储为"DOM属性". 两者是有区别的.&amp;nbsp;&amp;nbsp; 虽然我们设置了元素的src是相对路径:images/image.1.jpg&amp;nbsp;&amp;nbsp; 但是在"DOM属性"中都会转换成绝对路径:&lt;a href="http://localhost/images/image.1.jpg"&gt;http://localhost/images/image.1.jpg&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;甚至有些"元素属性"和"DOM属性"的名称都不一样,比如上面的元素属性class, 转换为DOM属性后对应className.&lt;/p&gt;&lt;p&gt;牢记, 在javascript中我们可以直接获取或设置"DOM属性":&lt;/p&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; img1 = document.getElementById(&lt;span class="str"&gt;"hibiscus"&lt;/span&gt;);&lt;br/&gt;            alert(img1.alt);&lt;br/&gt;            img1.alt = &lt;span class="str"&gt;"Change the alt element attribute"&lt;/span&gt;;&lt;br/&gt;            alert(img1.alt);&lt;br/&gt;        })&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;所以如果要设置元素的CSS样式类, 要使用的是"DOM属性"className"而不是"元素属性"class:&lt;/p&gt;img1.className = &lt;span class="str"&gt;"classB"&lt;/span&gt;;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四. 操作"DOM属性"&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在jQuery中没有包装操作"DOM属性"的函数, 因为使用javascript获取和设置"DOM属性"都很简单. 在jQuery提供了each()函数用于遍历jQuery包装集, 其中的this指针是一个DOM对象, 所以我们可以应用这一点配合原生javascript来操作元素的DOM属性:&lt;/p&gt;            $(&lt;span class="str"&gt;"img"&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;(index) {&lt;br/&gt;                alert(&lt;span class="str"&gt;"index:"&lt;/span&gt; + index + &lt;span class="str"&gt;", id:"&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.id + &lt;span class="str"&gt;", alt:"&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.alt);&lt;br/&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.alt = &lt;span class="str"&gt;"changed"&lt;/span&gt;;&lt;br/&gt;                alert(&lt;span class="str"&gt;"index:"&lt;/span&gt; + index + &lt;span class="str"&gt;", id:"&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.id + &lt;span class="str"&gt;", alt:"&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.alt);&lt;br/&gt;            });&lt;p&gt;下面是each函数的说明:&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Core/each#callback"&gt;each( callback )&lt;/a&gt;&lt;/strong&gt;&lt;strong&gt;&amp;nbsp; Returns:&lt;/strong&gt; jQuery包装集&lt;/p&gt;&lt;p&gt;对包装集中的每一个元素执行callback方法. 其中callback方法接受一个参数, 表示当前遍历的索引值,从0开始.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五. 操作"元素属性"&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们可以使用javascript中的getAttribute和setAttribute来操作元素的"元素属性".&lt;/p&gt;&lt;p&gt;在jQuery中给你提供了attr()包装集函数, 能够同时操作包装集中所有元素的属性:&lt;/p&gt;&lt;table style="width: 792px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/attr#name"&gt;attr( name )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;取得第一个匹配元素的属性值。通过这个方法可以方便地从第一个匹配元素中获取一个属性的值。如果元素没有相应属性，则返回 undefined 。&lt;/td&gt;&lt;td valign="top" width="320"&gt;返回文档中第一个图像的src属性值:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("img").attr("src");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/attr#properties"&gt;attr( properties )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;将一个&amp;ldquo;名/值&amp;rdquo;形式的对象设置为所有匹配元素的属性。&lt;/p&gt;&lt;p&gt;这是一种在所有匹配元素中批量设置很多属性的最佳方式。 注意，如果你要设置对象的class属性，你必须使用'className' 作为属性名。或者你可以直接使用.addClass( class ) 和 .removeClass( class ).&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;为所有图像设置src和alt属性:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("img").attr({ src: "test.jpg", alt: "Test Image" });&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/attr#keyvalue"&gt;attr( key, value )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;为所有匹配的元素设置一个属性值。&lt;/td&gt;&lt;td valign="top" width="320"&gt;为所有图像设置src属性:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("img").attr("src","test.jpg");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/attr#keyfn"&gt;attr( key, fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;为所有匹配的元素设置一个计算的属性值。&lt;/p&gt;&lt;p&gt;不提供值，而是提供一个函数，由这个函数计算的值作为属性值。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;把src属性的值设置为title属性的值:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("img").attr("title", function() { return this.src });&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/removeAttr#name"&gt;removeAttr( name )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;从每一个匹配的元素中删除一个属性&lt;/td&gt;&lt;td valign="top" width="320"&gt;将文档中图像的src属性删除:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("img").removeAttr("src");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当使用id选择器时常常返回只有一个对象的jQuery包装集, 这个时侯常使用attr(name)函数获得它的元素属性:&lt;/p&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; testAttr1(&lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;br/&gt;   alert($(&lt;span class="str"&gt;"#hibiscus"&lt;/span&gt;).attr(&lt;span class="str"&gt;"class"&lt;/span&gt;));&lt;br/&gt;}&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;注意attr(name)函数只返回第一个匹配元素的特定元素属性值. 而attr(key, name)会设置所有包装集中的元素属性:&lt;/p&gt;&lt;span class="rem"&gt;//修改所有img元素的alt属性&lt;/span&gt;&lt;br/&gt;$(&lt;span class="str"&gt;"img"&lt;/span&gt;).attr(&lt;span class="str"&gt;"alt"&lt;/span&gt;, &lt;span class="str"&gt;"修改后的alt属性"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;而 &lt;a href="http://docs.jquery.com/Attributes/attr#properties"&gt;&lt;strong&gt;attr( properties )&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;可以一次修改多个元素属性:&lt;/p&gt;$(&lt;span class="str"&gt;"img"&lt;/span&gt;).attr({title:&lt;span class="str"&gt;"修改后的title"&lt;/span&gt;, alt: &lt;span class="str"&gt;"同时修改alt属性"&lt;/span&gt;});&lt;p&gt;另外虽然我们可以使用 &lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/removeAttr#name"&gt;removeAttr( name )&lt;/a&gt;&lt;/strong&gt; 删除元素属性, 但是对应的DOM属性是不会被删除的, 只会影响DOM属性的值.&lt;/p&gt;&lt;p&gt;比如将一个input元素的readonly元素属性去掉,会导致对应的DOM属性变成false(即input变成可编辑状态):&lt;/p&gt;$(&lt;span class="str"&gt;"#inputTest"&lt;/span&gt;).removeAttr(&lt;span class="str"&gt;"readonly"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六,修改CSS样式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;修改元素的样式, 我们可以修改元素CSS类或者直接修改元素的样式.&lt;/p&gt;&lt;p&gt;一个元素可以应用多个css类, 但是不幸的是在DOM属性中是用一个以空格分割的字符串存储的, 而不是数组. 所以如果在原始javascript时代我们想对元素添加或者删除多个属性时, 都要自己操作字符串.&lt;/p&gt;&lt;p&gt;jQuery让这一切变得异常简单. 我们再也不用做那些无聊的工作了.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 修改CSS类&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下表是修改CSS类相关的jQuery方法:&lt;/p&gt;&lt;table style="width: 794px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="322"&gt;&lt;strong&gt;实例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/addClass#class"&gt;addClass( classes )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;为每个匹配的元素添加指定的类名。&lt;/td&gt;&lt;td valign="top" width="322"&gt;为匹配的元素加上 'selected' 类:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").addClass("selected");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/hasClass#class"&gt;hasClass( class )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;判断包装集中是否至少有一个元素应用了指定的CSS类&lt;/td&gt;&lt;td valign="top" width="322"&gt;$("p").hasClass("selected");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/removeClass#class"&gt;removeClass( [classes] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;从所有匹配的元素中删除全部或者指定的类。&lt;/td&gt;&lt;td valign="top" width="322"&gt;从匹配的元素中删除 'selected' 类:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").removeClass("selected");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/toggleClass#class"&gt;toggleClass( class )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;如果存在（不存在）就删除（添加）一个类。&lt;/td&gt;&lt;td valign="top" width="322"&gt;为匹配的元素切换 'selected' 类:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").toggleClass("selected");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/toggleClass#classswitch"&gt;toggleClass( class, switch )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;当switch是true时添加类,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当switch是false时删除类&lt;/td&gt;&lt;td valign="top" width="322"&gt;&lt;p&gt;每三次点击切换高亮样式:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").click(function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $(this).toggleClass("highlight", count++ % 3 == 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;使用上面的方法, 我们可以将元素的CSS类像集合一样修改, 再也不必手工解析字符串.&lt;/p&gt;&lt;p&gt;注意&amp;nbsp; &lt;a href="http://docs.jquery.com/Attributes/addClass#class"&gt;&lt;strong&gt;addClass( class )&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;和&lt;strong&gt;&lt;a href="http://docs.jquery.com/Attributes/removeClass#class"&gt;removeClass( [classes] )&lt;/a&gt;&lt;/strong&gt; 的参数可以一次传入多个css类, 用空格分割,比如:&lt;/p&gt;$(&lt;span class="str"&gt;"#btnAdd"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $(&lt;span class="str"&gt;"p"&lt;/span&gt;).addClass(&lt;span class="str"&gt;"colorRed borderBlue"&lt;/span&gt;); });&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;removeClass方法的参数可选, 如果不传入参数则移除全部CSS类:&lt;/p&gt; $(&lt;span class="str"&gt;"p"&lt;/span&gt;).removeClass()&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 修改CSS样式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;同样当我们想要修改元素的具体某一个CSS样式,即修改元素属性"style"时,&amp;nbsp; jQuery也提供了相应的方法:&lt;/p&gt;&lt;table style="width: 792px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;&lt;strong&gt;实例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/css#name"&gt;css( name )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;访问第一个匹配元素的样式属性。&lt;/td&gt;&lt;td valign="top" width="320"&gt;取得第一个段落的color样式属性的值:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").css("color");&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/css#properties"&gt;css( properties )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;把一个&amp;ldquo;名/值对&amp;rdquo;对象设置为所有匹配元素的样式属性。&lt;/p&gt;&lt;p&gt;这是一种在所有匹配的元素上设置大量样式属性的最佳方式。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;将所有段落的字体颜色设为红色并且背景为蓝色:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").css({ color: "#ff0011", background: "blue" });&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/css#namevalue"&gt;css( name, value )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;在所有匹配的元素中，设置一个样式属性的值。&lt;/p&gt;&lt;p&gt;数字将自动转化为像素值&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;将所有段落字体设为红色:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").css("color","red");&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七.获取常用属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;虽然我们可以通过获取属性,特性以及CSS样式来取得元素的几乎所有信息,&amp;nbsp; 但是注意下面的实验:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;获取对象宽度&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br/&gt;        $(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="str"&gt;"attr(\"width\"):"&lt;/span&gt; + $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).attr(&lt;span class="str"&gt;"width"&lt;/span&gt;)); &lt;span class="rem"&gt;//undifined&lt;/span&gt;&lt;br/&gt;            alert(&lt;span class="str"&gt;"css(\"width\"):"&lt;/span&gt; + $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).css(&lt;span class="str"&gt;"width"&lt;/span&gt;)); &lt;span class="rem"&gt;//auto(ie6) 或 1264px(ff)&lt;/span&gt;&lt;br/&gt;            alert(&lt;span class="str"&gt;"width():"&lt;/span&gt; + $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).width()); &lt;span class="rem"&gt;//正确的数值1264&lt;/span&gt;&lt;br/&gt;            alert(&lt;span class="str"&gt;"style.width:"&lt;/span&gt; +  $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;)[0].style.width ); &lt;span class="rem"&gt;//空值&lt;/span&gt;&lt;br/&gt;        })&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        测试文本&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;我们希望获取测试图层的宽度,&amp;nbsp; 使用attr方法获取"元素特性"为undifined, 因为并没有为div添加width. 而使用css()方法虽然可以获取到style属性的值, 但是在不同浏览器里返回的结果不同, IE6下返回auto, 而FF下虽然返回了正确的数值但是后面带有"px". 所以jQuery提供了width()方法, 此方法返回的是正确的不带px的数值.&lt;/p&gt;&lt;p&gt;针对上面的问题, jQuery为常用的属性提供了获取和设置的方法, 比如width()用户获取元素的宽度, 而 width(val)用来设置元素宽度.&lt;/p&gt;&lt;p&gt;下面这些方法可以用来获取元素的常用属性值:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.宽和高相关 Height and Width&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 793px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="321"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/height"&gt;height( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;取得第一个匹配元素当前计算的高度值（px）。&lt;/td&gt;&lt;td valign="top" width="321"&gt;获取第一段的高:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").height();&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/height#val"&gt;height( val )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;为每个匹配的元素设置CSS高度(hidth)属性的值。如果没有明确指定单位（如：em或%），使用px。&lt;/td&gt;&lt;td valign="top" width="321"&gt;把所有段落的高设为 20:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").height(20);&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/width"&gt;width( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;取得第一个匹配元素当前计算的宽度值（px）。&lt;/td&gt;&lt;td valign="top" width="321"&gt;获取第一段的宽:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").width();&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/width#val"&gt;width( val )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;为每个匹配的元素设置CSS宽度(width)属性的值。&lt;/p&gt;&lt;p&gt;如果没有明确指定单位（如：em或%），使用px。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="321"&gt;将所有段落的宽设为 20:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").width(20);&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/innerHeight"&gt;innerHeight( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取第一个匹配元素内部区域高度（包括补白、不包括边框）。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="321"&gt;见最后示例&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/innerWidth"&gt;innerWidth( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取第一个匹配元素内部区域宽度（包括补白、不包括边框）。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="321"&gt;见最后示例&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/outerHeight#margin"&gt;outerHeight( [margin] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取第一个匹配元素外部高度（默认包括补白和边框）。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="321"&gt;见最后示例&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/outerWidth#margin"&gt;outerWidth( [margin] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取第一个匹配元素外部宽度（默认包括补白和边框）。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="321"&gt;见最后示例&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;关于在获取长宽的函数中, 要区别"inner", "outer"和height/width这三种函数的区别:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_97C0/image_2.png"&gt;&lt;img style="border: 0px currentColor; margin-right: auto; margin-left: auto; float: none; display: block;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjQuery_97C0/image_thumb.png" alt="image" width="757" height="328" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;outerWith可以接受一个bool值参数表示是否计算margin值.&lt;/p&gt;&lt;p&gt;相信此图一目了然各个函数所索取的范围. 图片以width为例说明的, height的各个函数同理.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.位置相关 Positioning&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;另外在一些设计套弹出对象的脚本中,常常需要动态获取弹出坐标并且设置元素的位置.&lt;/p&gt;&lt;p&gt;但是很多的计算位置的方法存在着浏览器兼容性问题,&amp;nbsp; jQuery中为我们提供了位置相关的各个函数:&lt;/p&gt;&lt;table style="width: 792px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/offset"&gt;offset( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取匹配元素在当前窗口的相对偏移。&lt;/p&gt;&lt;p&gt;返回的对象包含两个整形属性：top 和 left。此方法只对可见元素有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;获取第二段的偏移:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;var p = $("p:last");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var offset = p.offset();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.html( "left: " + offset.left + ", top: " + offset.top );&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/position"&gt;position( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取匹配元素相对父元素的偏移。&lt;/p&gt;&lt;p&gt;返回的对象包含两个整形属性：top 和 left。为精确计算结果，请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;获取第一段的偏移:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;var p = $("p:first");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var position = p.position();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p:last").html( "left: " + position.left + ", top: " + position.top );&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/scrollTop"&gt;scrollTop( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取匹配元素相对滚动条顶部的偏移。&lt;/p&gt;&lt;p&gt;此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;获取第一段相对滚动条顶部的偏移:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;var p = $("p:first");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p:last").text( "scrollTop:" + p.scrollTop() );&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/scrollTop#val"&gt;scrollTop( val )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;传递参数值时，设置垂直滚动条顶部偏移为该值。&lt;/p&gt;&lt;p&gt;此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;设定垂直滚动条值:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;$("div.demo").scrollTop(300);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/scrollLeft"&gt;scrollLeft( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;获取匹配元素相对滚动条左侧的偏移。&lt;/p&gt;&lt;p&gt;此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;获取第一段相对滚动条左侧的偏移:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;code&gt;var p = $("p:first");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p:last").text( "scrollLeft:" + p.scrollLeft() );&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/CSS/scrollLeft#val"&gt;scrollLeft( val )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;传递参数值时，设置水平滚动条左侧偏移为该值。&lt;/p&gt;&lt;p&gt;此方法对可见和隐藏元素均有效。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="320"&gt;设置相对滚动条左侧的偏移:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;$("div.demo").scrollLeft(300);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本篇文章主要讲解如何使用jQuery操作元素的属性和修改样式. 请大家主要注意元素属性和DOM属性的区别. 下一篇文章将讲解最重要的事件, 介绍如何绑定事件, 操作事件对象等.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371488.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371488.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371473.html</id><title type="text">从零开始学习jQuery (三) 管理jQuery包装集</title><summary type="text">一.摘要在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着学习如何管理jQuery包装集, 比如添加,删除,切片等.二.前言本系列的2,3篇上面列举了太多的API相信大家看着眼晕. 不过这些基础还必须要讲, 基础要扎实.其实对于这些列表大家可以跳过, 等以后用到时再回头看或者查询官方的API说明.本章内容很少, 主要讲解动态创建元素和操作jQuery包装集的各个函数.三.动态创建元素1.错误的编程方法我们经常使用javascript动态的创建元素, 有很多程序员通过直接更改某一个容器的HTML内容.比如:&lt;!DOCTYPE</summary><published>2012-02-28T06:04:00Z</published><updated>2012-02-28T06:04:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371473.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371473.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着学习如何管理jQuery包装集, 比如添加,删除,切片等.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本系列的2,3篇上面列举了太多的API相信大家看着眼晕. 不过这些基础还必须要讲, 基础要扎实.其实对于这些列表大家可以跳过, 等以后用到时再回头看或者查询官方的API说明.&lt;/p&gt;&lt;p&gt;本章内容很少, 主要讲解动态创建元素和操作jQuery包装集的各个函数.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.动态创建元素&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.错误的编程方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们经常使用javascript动态的创建元素, 有很多程序员通过直接更改某一个容器的HTML内容.比如:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;动态创建对象&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;测试图层&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    document.getElementById(&lt;span class="str"&gt;"testDiv"&lt;/span&gt;).innerHTML = &lt;span class="str"&gt;"&amp;lt;div style=\"border:solid 1px #FF0000\"&amp;gt;动态创建的div&amp;lt;/div&amp;gt;"&lt;/span&gt;;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;p&gt;上面的示例中我通过修改testDiv的内容,在页面上动态的添加了一个div元素.&lt;strong&gt; 但是请牢记,这是错误的做法!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;错误的原因:&lt;/p&gt;&lt;p&gt;(1) 在页面加载时改变了页面的结构. 在IE6中如果网络变慢或者页面内容太大就会出现"终止操作"的错误. 也就是说"永远不要在页面加载时改变页面的Dom模型".&lt;/p&gt;&lt;p&gt;(2) 使用修改HTML内容添加元素,&amp;nbsp; 不符合Dom标准. 在实际工作中也碰到过使用这种方法修改内容后, 某些浏览器中并不能立刻显示添加的元素, 因为不同浏览器的显示引擎是不同的. 但是如果我们使用Dom的CreateElement创建对象, 在所有的浏览器中几乎都可以. 但是在jQuery中如果传入的而是一个完整的HTML字符串, 内部也是使用innerHTML. 所以也不是完全否定innerHTML函数的使用.&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;所以从现在开始请摒弃这种旧知识, 使用下面介绍的正确方法编程.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.创建新的元素&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面介绍两种正确的创建元素的方式.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1)使用HTML DOM创建元素&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;什么是 DOM？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过 JavaScript，您可以重构整个 HTML 文档。您可以添加、移除、改变或重排页面上的项目。&lt;/p&gt;&lt;p&gt;要改变页面的某个东西，JavaScript 就需要对 HTML 文档中所有元素进行访问的入口。这个入口，连同对 HTML 元素进行添加、移动、改变或移除的方法和属性，都是通过文档对象模型来获得的（DOM）。&lt;/p&gt;&lt;p&gt;在 1998 年，W3C 发布了第一级的 DOM 规范。这个规范允许访问和操作 HTML 页面中的每一个单独的元素。&lt;/p&gt;&lt;p&gt;所有的浏览器都执行了这个标准，因此，DOM 的兼容性问题也几乎难觅踪影了。&lt;/p&gt;&lt;p&gt;DOM 可被 JavaScript 用来读取、改变 HTML、XHTML 以及 XML 文档。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DOM 被分为不同的部分（核心、XML及HTML）和级别（DOM Level 1/2/3）：&lt;/strong&gt;&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;Core DOM&lt;/dt&gt;&lt;dd&gt;定义了一套标准的针对任何结构化文档的对象&lt;/dd&gt;&lt;dt&gt;&lt;a href="http://www.w3school.com.cn/xmldom/index.asp"&gt;XML DOM&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;定义了一套标准的针对 XML 文档的对象&lt;/dd&gt;&lt;dt&gt;HTML DOM&lt;/dt&gt;&lt;dd&gt;定义了一套标准的针对 HTML 文档的对象。&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;关于使用HTML DOM创建元素本文不做详细介绍, 下面举一个简单的例子:&lt;/p&gt;    &lt;span class="rem"&gt;//使用Dom标准创建元素&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; select = document.createElement(&lt;span class="str"&gt;"select"&lt;/span&gt;);&lt;br/&gt;    select.options[0] = &lt;span class="kwrd"&gt;new&lt;/span&gt; Option(&lt;span class="str"&gt;"加载项1"&lt;/span&gt;, &lt;span class="str"&gt;"value1"&lt;/span&gt;);&lt;br/&gt;    select.options[1] = &lt;span class="kwrd"&gt;new&lt;/span&gt; Option(&lt;span class="str"&gt;"加载项2"&lt;/span&gt;, &lt;span class="str"&gt;"value2"&lt;/span&gt;);&lt;br/&gt;    select.size = &lt;span class="str"&gt;"2"&lt;/span&gt;;&lt;br/&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; = testDiv.appendChild(select);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;通过使用 document.createElement 方法我们可以创建Dom元素, 然后通过appendChild方法为添加到指定对象上.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) 使用jQuery函数创建元素&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在jQuery中创建对象更加简单, 比如创建一个Div元素:&lt;/p&gt;$(&lt;span class="str"&gt;"&amp;lt;div style=\"border:solid 1px #FF0000\"&amp;gt;动态创建的div&amp;lt;/div&amp;gt;"&lt;/span&gt;)&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;我们主要使用jQuery核心类库中的一个方法:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Core/jQuery#htmlownerDocument"&gt;jQuery( html, ownerDocument )&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;Returns:&lt;/strong&gt; jQuery&lt;/p&gt;&lt;p&gt;&lt;em&gt;根据HTML原始字符串动态创建Dom元素.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;其中html参数是一个HTML字符串,&amp;nbsp; 在jQuery1.3.2中对此函数做了改进:&lt;/p&gt;&lt;p&gt;当HTML字符串是没有属性的元素是, 内部使用document.createElement创建元素, 比如:&lt;/p&gt;&lt;span class="rem"&gt;//jQuery内部使用document.createElement创建元素:&lt;/span&gt;&lt;br/&gt;$(&lt;span class="str"&gt;"&amp;lt;div/&amp;gt;"&lt;/span&gt;).css(&lt;span class="str"&gt;"border"&lt;/span&gt;,&lt;span class="str"&gt;"solid 1px #FF0000"&lt;/span&gt;).html(&lt;span class="str"&gt;"动态创建的div"&lt;/span&gt;).appendTo(testDiv);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;否则使用innerHTML方法创建元素:&lt;/p&gt;&lt;span class="rem"&gt;//jQuery内部使用innerHTML创建元素:&lt;/span&gt;&lt;br/&gt;$(&lt;span class="str"&gt;"&amp;lt;div style=\"border:solid 1px #FF0000\"&amp;gt;动态创建的div&amp;lt;/div&amp;gt;"&lt;/span&gt;).appendTo(testDiv);&lt;p&gt;&lt;strong&gt;3.将元素添加到对象上&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们可以使用上面两种方式创建一个而元素, 但是上面已经提到一定不要在页面加载时就改变页面的DOM结构, 比如添加一个元素. 正确的做法是在页面加载完毕后添加或删除元素.&lt;/p&gt;&lt;p&gt;传统上, 使用window.onload完成上述目的:&lt;/p&gt;&lt;span class="rem"&gt;//DOM加载完毕后添加元素&lt;/span&gt;&lt;br/&gt;&lt;span class="rem"&gt;//传统方法&lt;/span&gt;&lt;br/&gt;window.onload = &lt;span class="kwrd"&gt;function&lt;/span&gt;() { testDiv.innerHTML = &lt;span class="str"&gt;"&amp;lt;div style=\"border:solid 1px #FF0000\"&amp;gt;动态创建的div&amp;lt;/div&amp;gt;"&lt;/span&gt;; }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;虽然能够在DOM完整加载后, 在添加新的元素, 但是不幸的是浏览器执行window.onload函数不仅仅是在构建完DOM树之后, 也是在所有图像和其他外部资源完整的加载并且在浏览器窗口显示完毕之后. 所以如果某个图片或者其他资源加载很长时间, 访问者就会看到一个不完整的页面, 甚至在图片加载之前就执行了需要依赖动态添加的元素的脚本而导致脚本错误.&lt;/p&gt;&lt;p&gt;解决办法就是等DOM被解析后, 在图像和外部资源加载之前执行我们的函数.在jQuery中让这一实现变得可行:&lt;/p&gt;&lt;span class="rem"&gt;//jQuery 使用动态创建的$(document).ready(function)方法&lt;/span&gt;&lt;br/&gt;$(document).ready(&lt;br/&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt;() { testDiv.innerHTML = &lt;span class="str"&gt;"&amp;lt;div style=\"border:solid 1px #FF0000\"&amp;gt;使用动态创建的$(document).ready(function)方法&amp;lt;/div&amp;gt;"&lt;/span&gt;; }&lt;br/&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;或者使用简便语法:&lt;/p&gt;&lt;span class="rem"&gt;//jQuery 使用$(function)方法&lt;/span&gt;&lt;br/&gt;$(&lt;br/&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt;() { testDiv.innerHTML += &lt;span class="str"&gt;"&amp;lt;div style=\"border:solid 1px #FF0000\"&amp;gt;使用$(function)方法&amp;lt;/div&amp;gt;"&lt;/span&gt;; }&lt;br/&gt;);&lt;p&gt;使用$()将我们的函数包装起来即可. 而且可以在一个页面绑定多个函数, 如果使用传统的window.onload则只能调用一个函数.&lt;/p&gt;&lt;p&gt;所以请大家将修改DOM的函数使用此方法调用. 另外还要注意document.createElement和innerHTML的区别. 如果可以请尽量使用document.createElement和$("&amp;lt;div/&amp;gt;")的形式创建对象.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四.管理jQuery包装集元素&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;既然学会了动态创建元素, 接下来就会想要把这些元素放入我们的jQuery包装集中.&lt;/p&gt;&lt;p&gt;我们可以在jQuery包装集上调用下面这些函数, 用来改变我们的原始jQuery包装集, 并且大部分返回的都是过滤后的jQuery包装集.&lt;/p&gt;&lt;p&gt;jQuery提供了一系列的函数用来管理包装集:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.过滤 Filtering&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 790px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/eq#index"&gt;eq( index )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;获取第N个元素&lt;/td&gt;&lt;td valign="top" width="318"&gt;获取匹配的第二个元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").eq(1)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/filter#expr"&gt;filter( expr )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;筛选出与指定表达式匹配的元素集合。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;保留带有select类的元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").filter(".selected")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/filter#fn"&gt;filter( fn )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;筛选出与指定函数返回值匹配的元素集合&lt;/p&gt;&lt;p&gt;这个函数内部将对每个对象计算一次 (正如 '$.each'). 如果调用的函数返回false则这个元素被删除，否则就会保留。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;保留子元素中不含有ol的元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("div").filter(function(index) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; return $("ol", this).size() == 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/is#expr"&gt;is( expr )&lt;/a&gt;&lt;br /&gt;注意: 这个函数返回的不是jQuery包装集而是Boolean值&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;用一个表达式来检查当前选择的元素集合，如果其中至少有一个元素符合这个给定的表达式就返回true。&lt;/p&gt;&lt;p&gt;如果没有元素符合，或者表达式无效，都返回'false'. 'filter' 内部实际也是在调用这个函数，所以，filter()函数原有的规则在这里也适用。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;由于input元素的父元素是一个表单元素，所以返回true:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input[type='checkbox']").parent().is("form")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/map#callback"&gt;map( callback )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;将一组元素转换成其他数组（不论是否是元素数组）&lt;/p&gt;&lt;p&gt;你可以用这个函数来建立一个列表，不论是值、属性还是CSS样式，或者其他特别形式。这都可以用'$.map()'来方便的建立&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;把form中的每个input元素的值建立一个列表:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("p").append( $("input").map(function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; return $(this).val();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).get().join(", ") );&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/not#expr"&gt;not( expr )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;删除与指定表达式匹配的元素&lt;/td&gt;&lt;td valign="top" width="318"&gt;从p元素中删除带有 select 的ID的元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").not( $("#selected")[0] )&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/slice#startend"&gt;slice( start, end )&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;选取一个匹配的子集&lt;/td&gt;&lt;td valign="top" width="318"&gt;选择第一个p元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").slice(0, 1);&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;2.查找 Finding&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 791px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/add#expr"&gt;add( expr )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;把与表达式匹配的元素添加到jQuery对象中。这个函数可以用于连接分别与两个表达式匹配的元素结果集。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;动态生成一个元素并添加至匹配的元素中:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").add("&amp;lt;span&amp;gt;Again&amp;lt;/span&amp;gt;")&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/children#expr"&gt;children( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。&lt;/p&gt;&lt;p&gt;可以通过可选的表达式来过滤所匹配的子元素。注意：parents()将查找所有祖辈元素，而children()只考虑子元素而不考虑所有后代元素。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;查找DIV中的每个子元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("div").children()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/closest#expr"&gt;closest( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;取得与表达式匹配的最新的父元素&lt;/td&gt;&lt;td valign="top" width="319"&gt;&lt;p&gt;为事件源最近的父类li对象更换样式:&lt;/p&gt;&lt;p&gt;$(document).bind("click", function (e) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $(e.target).closest("li").toggleClass("hilight");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/contents"&gt;contents( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;查找匹配元素内部所有的子节点（包括文本节点）。如果元素是一个iframe，则查找文档内容&lt;/td&gt;&lt;td valign="top" width="319"&gt;查找所有文本节点并加粗:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").contents().not("[nodeType=1]").wrap("&amp;lt;b/&amp;gt;");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/find#expr"&gt;find( expr )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法。&lt;/p&gt;&lt;p&gt;所有搜索都依靠jQuery表达式来完成。这个表达式可以使用CSS1-3的选择器语法来写。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;从所有的段落开始，进一步搜索下面的span元素。与$("p span")相同:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").find("span")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/next#expr"&gt;next( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合。&lt;/p&gt;&lt;p&gt;这个函数只返回后面那个紧邻的同辈元素，而不是后面所有的同辈元素（可以使用nextAll）。可以用一个可选的表达式进行筛选。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;找到每个段落的后面紧邻的同辈元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").next()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/nextAll#expr"&gt;nextAll( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;查找当前元素之后所有的同辈元素。&lt;/p&gt;&lt;p&gt;可以用表达式过滤&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;给第一个div之后的所有元素加个类:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("div:first").nextAll().addClass("after");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/offsetParent"&gt;offsetParent( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;返回第一个有定位的父类(比如(relative或absolute)).&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="319"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/parent#expr"&gt;parent( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;取得一个包含着所有匹配元素的唯一父元素的元素集合。&lt;/p&gt;&lt;p&gt;你可以使用可选的表达式来筛选。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;查找每个段落的父元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").parent()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/parents#expr"&gt;parents( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;取得一个包含着所有匹配元素的祖先元素的元素集合（不包含根元素）。可以通过一个可选的表达式进行筛选。&lt;/td&gt;&lt;td valign="top" width="319"&gt;找到每个span元素的所有祖先元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("span").parents()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/prev#expr"&gt;prev( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合。&lt;/p&gt;&lt;p&gt;可以用一个可选的表达式进行筛选。只有紧邻的同辈元素会被匹配到，而不是前面所有的同辈元素。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;找到每个段落紧邻的前一个同辈元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("p").prev()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/prevAll#expr"&gt;prevAll( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;查找当前元素之前所有的同辈元素&lt;/p&gt;&lt;p&gt;可以用表达式过滤。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="319"&gt;给最后一个之前的所有div加上一个类:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("div:last").prevAll().addClass("before");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/siblings#expr"&gt;siblings( [expr] )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合。可以用可选的表达式进行筛选。&lt;/td&gt;&lt;td valign="top" width="319"&gt;找到每个div的所有同辈元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("div").siblings()&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;3.串联 Chaining&lt;/p&gt;&lt;table style="width: 790px;" border="1" cellspacing="1" cellpadding="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/andSelf"&gt;andSelf( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;加入先前所选的加入当前元素中&lt;/p&gt;&lt;p&gt;对于筛选或查找后的元素，要加入先前所选元素时将会很有用。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;选取所有div以及内部的p，并加上border类:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("div").find("p").andSelf().addClass("border");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Traversing/end"&gt;end( )&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;回到最近的一个"破坏性"操作之前。即，将匹配的元素列表变为前一次的状态。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;如果之前没有破坏性操作，则返回一个空集。所谓的"破坏性"就是指任何改变所匹配的jQuery元素的操作。这包括在 Traversing 中任何返回一个jQuery对象的函数--'add', 'andSelf', 'children', 'filter', 'find', 'map', 'next', 'nextAll', 'not', 'parent', 'parents', 'prev', 'prevAll', 'siblings' and 'slice'--再加上 Manipulation 中的 'clone'。&lt;/td&gt;&lt;td valign="top" width="318"&gt;选取所有的p元素，查找并选取span子元素，然后再回过来选取p元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;$("p").find("span").end()&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五.常用函数举例&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;[待续]&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本篇文章内容较少, 主要讲解如何动态创建元素以及管理jQuery包装集, 接口文档列举了太多,&amp;nbsp; 实例部分还没来得及写. 因为要睡觉明天还要上班, 所以请各位见谅, 等以后有空的时候补上!&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371473.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371473.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371214.html</id><title type="text">从零开始学习jQuery (二) 万能的选择器</title><summary type="text">一.摘要本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显减轻开发人员的工作量.二.前言编写任何javascript程序我们要首先获得对象, jQuery选择器能彻底改变我们平时获取对象的方式, 可以获取几乎任何语意的对象, 比如"拥有title属性并且值中包含test的&lt;a&gt;元素", 完成这些工作只需要编写一个jQuery选择器字符串. 学习jQuery选择器是学习jQuery最重要的一步.三.Dom对象和jQuery包装集无论是在写程序还是看API文档, 我们要时刻注意区分Dom对象</summary><published>2012-02-28T03:18:00Z</published><updated>2012-02-28T03:18:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371214.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371214.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显减轻开发人员的工作量.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;编写任何javascript程序我们要首先获得对象, jQuery选择器能彻底改变我们平时获取对象的方式, 可以获取几乎任何语意的对象, 比如"拥有title属性并且值中包含test的&amp;lt;a&amp;gt;元素", 完成这些工作只需要编写一个jQuery选择器字符串. 学习jQuery选择器是学习jQuery最重要的一步.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.Dom对象和jQuery包装集&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;无论是在写程序还是看API文档,&amp;nbsp; 我们要时刻注意区分Dom对象和jQuery包装集.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.Dom对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在传统的javascript开发中,我们都是首先获取Dom对象,比如:&lt;/p&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; div = document.getElementById(&lt;span class="str"&gt;"testDiv"&lt;/span&gt;);&lt;br/&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; divs = document.getElementsByTagName(&lt;span class="str"&gt;"div"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;我们经常使用 document.getElementById 方法根据id获取单个Dom对象, 或者使用 document.getElementsByTagName 方法根据HTML标签名称获取Dom对象集合.&lt;/p&gt;&lt;p&gt;另外在事件函数中, 可以通过在方法函数中使用this引用事件触发对象(但是在多播事件函数中IE6存在问题), 或者使用event对象的target(FF)或srcElement(iIE6)获取到引发事件的Dom对象.&lt;/p&gt;&lt;p&gt;注意我们这里获取到的都是Dom对象, Dom对象也有不同的类型比如input, div, span等.&amp;nbsp; Dom对象只有有限的属性和方法:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image_2.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image_thumb.png" alt="image" width="191" height="171" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.jQuery包装集&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery包装集可以说是Dom对象的扩充.在jQuery的世界中将所有的对象, 无论是一个还是一组, 都封装成一个jQuery包装集,比如获取包含一个元素的jQuery包装集:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; jQueryObject = $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;);&lt;p&gt;jQuery包装集都是作为一个对象一起调用的. jQuery包装集拥有丰富的属性和方法, 这些都是jQuery特有的:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image_4.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image_thumb_1.png" alt="image" width="135" height="174" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.Dom对象与jQuery对象的转换&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1) Dom转jQuery包装集&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果要使用jQuery提供的函数,&amp;nbsp; 就要首先构造jQuery包装集.&amp;nbsp; 我们可以使用本文即将介绍的jQuery选择器直接构造jQuery包装集,比如:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;br /&gt;上面语句构造的包装集只含有一个id是testDiv的元素.&lt;/p&gt;&lt;p&gt;或者我们已经获取了一个Dom元素,比如:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; div = document.getElementById(&lt;span class="str"&gt;"testDiv"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;上面的代码中div是一个Dom元素, 我们可以将Dom元素转换成jQuery包装集:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; domToJQueryObject = $(div);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;小窍门:因为有了智能感知, 所以我们可以通过智能感知的方法列表来判断一个对象啊是Dom对象还是jQuery包装集.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) jQuery包装集转Dom对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery包装集是一个集合, 所以我们可以通过索引器访问其中的某一个元素:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; domObject = $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;)[0];&lt;p&gt;&lt;strong&gt;注意, 通过索引器返回的不再是jQuery包装集, 而是一个Dom对象!&lt;/strong&gt;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;jQuery包装集的某些遍历方法,比如each()中, 可以传递遍历函数, 在遍历函数中的this也是Dom元素,比如:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() { alert(&lt;span class="kwrd"&gt;this&lt;/span&gt;) })&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;如果我们要使用jQuery的方法操作Dom对象,怎么办? 用上面介绍过的转换方法即可:&lt;/p&gt;$(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;).each(&lt;span class="kwrd"&gt;function&lt;/span&gt;() { $(&lt;span class="kwrd"&gt;this&lt;/span&gt;).html(&lt;span class="str"&gt;"修改内容"&lt;/span&gt;) })&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;小结: 先让大家明确Dom对象和jQuery包装集的概念, 将极大的加快我们的学习速度. 我在学习jQuery的过程中就花了很长时间没有领悟到两者的具体差异, 因为书上并没有专门讲解两者的区别, 所以经常被"this指针为何不能调用jQuery方法"等问题迷惑.&amp;nbsp; 直到某一天豁然开朗, 发现只要能够区分这两者, 就能够在写程序时变得清清楚楚.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四. 什么是jQuery选择器&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在Dom编程中我们只能使用有限的函数根据id或者TagName获取Dom对象.&lt;/p&gt;&lt;p&gt;在jQuery中则完全不同,jQuery提供了异常强大的选择器用来帮助我们获取页面上的对象, 并且将对象&lt;strong&gt;以jQuery包装集的形式返回.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先来看看什么是选择器:&lt;/p&gt;    //根据ID获取jQuery包装集&lt;br/&gt;    var jQueryObject = $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;上例中使用了ID选择器, 选取id为testDiv的Dom对象并将它放入jQuery包装集, 最后&lt;strong&gt;以jQuery包装集的形式返回.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;"$"&lt;/strong&gt;符号在jQuery中代表对jQuery对象的引用, "jQuery"是核心对象, 其中包含下列方法:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Core/jQuery#expressioncontext"&gt;jQuery( expression, context )&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;Returns:&lt;/strong&gt; jQuery&lt;/p&gt;&lt;p&gt;&lt;em&gt;这个函数接收一个CSS选择器的字符串，然后用这个字符串去匹配一组元素。 &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;This function accepts a string containing a CSS selector which is then used to match a set of elements.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Core/jQuery#htmlownerDocument"&gt;jQuery( html, ownerDocument )&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;Returns:&lt;/strong&gt; jQuery&lt;/p&gt;&lt;p&gt;&lt;em&gt;根据HTML原始字符串动态创建Dom元素.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Create DOM elements on-the-fly from the provided String of raw HTML.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Core/jQuery#elements"&gt;jQuery( elements )&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;Returns:&lt;/strong&gt; jQuery&lt;/p&gt;&lt;p&gt;&lt;em&gt;将一个或多个Dom对象封装jQuery函数功能(即封装为jQuery包装集)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Wrap jQuery functionality around a single or multiple DOM Element(s).&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Core/jQuery#callback"&gt;jQuery( callback )&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;Returns:&lt;/strong&gt; jQuery&lt;/p&gt;&lt;p&gt;&lt;em&gt;$(document).ready()的简写方式&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;A shorthand for $(document).&lt;/em&gt;&lt;a href="http://docs.jquery.com/Events/ready"&gt;&lt;em&gt;ready&lt;/em&gt;&lt;/a&gt;&lt;em&gt;().&lt;/em&gt;&lt;/p&gt;&lt;p&gt;上面摘选自jQuery官方手册.Returns的类型为jQuery即表示返回的是jQuery包装集.其中第一个方法有些问题, 官方接口写的是CSS选择器, 但是实际上这个方法不仅仅支持CSS选择器, 而是所有jQuery支持的选择器, 有些甚至是jQuery自定义的选择器(在CSS标准中不存在的选择器). 为了能让大家理解的更清楚,&amp;nbsp; 我将方法修改如下:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Core/jQuery#expressioncontext"&gt;jQuery( selector, context )&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;Returns:&lt;/strong&gt; jQuery 包装集&lt;/p&gt;&lt;p&gt;&lt;em&gt;根据选择器选取匹配的对象, 以jQuery包装集的形式返回. context可以是Dom对象集合或jQuery包装集, 传入则表示要从context中选择匹配的对象, 不传入则表示范围为文档对象(即页面全部对象).&lt;/em&gt;&lt;/p&gt;&lt;p&gt;上面这个方法就是我们选择器使用的核心方法.可以用"$"代替jQuery让语法更简介, 比如下面两句话的效果相同:&lt;/p&gt;    &lt;span class="rem"&gt;//根据ID获取jQuery包装集&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; jQueryObject = $(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;);&lt;br/&gt;&lt;br/&gt;    &lt;span class="rem"&gt;//$是jQuery对象的引用:&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; jQueryObject = jQuery(&lt;span class="str"&gt;"#testDiv"&lt;/span&gt;);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;接下来让我们系统的学习jQuery选择器.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五.jQuery选择器全解&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通俗的讲, Selector选择器就是"一个表示特殊语意的字符串". 只要把选择器字符串传入上面的方法中就能够选择不同的Dom对象并且以jQuery包装集的形式返回.&lt;/p&gt;&lt;p&gt;但是如何将jQuery选择器分类让我犯难. 因为书上的分类和jQuery官方的分类截然不同. 最后我决定以实用为主, 暂时不去了解CSS3选择器标准, 而按照jQuery官方的分类进行讲解.&lt;/p&gt;&lt;p&gt;jQuery的选择器支持CSS3选择器标准. 下面是W3C最新的CSS3选择器标准:&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.w3.org/TR/css3-selectors/" href="http://www.w3.org/TR/css3-selectors/"&gt;http://www.w3.org/TR/css3-selectors/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;标准中的选择器都可以在jQuery中使用.&lt;/p&gt;&lt;p&gt;jQuery选择器按照功能主要分为"选择"和"过滤". 并且是配合使用的. 可以同时使用组合成一个选择器字符串. 主要的区别是"过滤"作用的选择器是指定条件从前面匹配的内容中筛选, "过滤"选择器也可以单独使用, 表示从全部"*"中筛选. 比如:&lt;/p&gt;&lt;p&gt;$(":[title]")&lt;/p&gt;&lt;p&gt;等同于:&lt;/p&gt;&lt;p&gt;$("*:[title]")&lt;/p&gt;&lt;p&gt;而"选择"功能的选择器则不会有默认的范围, 因为作用是"选择"而不是"过滤".&lt;/p&gt;&lt;p&gt;下面的选择器分类中,&amp;nbsp; 带有"过滤器"的分类表示是"过滤"选择器,&amp;nbsp; 否则就是"选择"功能的选择器.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;jQuery选择器分为如下几类:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;[说明]&lt;/strong&gt; 1.点击"名称"会跳转到此方法的jQuery官方说明文档.&amp;nbsp;&amp;nbsp; 2.可以在下节中的jQuery选择器实验室测试各种选择器&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 基础选择器 &lt;strong&gt;Basics&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 767px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="130"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="365"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="266"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="139"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/id#id"&gt;#id&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="360"&gt;根据元素Id选择&lt;/td&gt;&lt;td valign="top" width="264"&gt;$("divId") 选择ID为divId的元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="146"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/element#element"&gt;element&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="356"&gt;根据元素的名称选择,&lt;/td&gt;&lt;td valign="top" width="262"&gt;$("a") 选择所有&amp;lt;a&amp;gt;元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="152"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/class#class"&gt;.class&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="353"&gt;根据元素的css类选择&lt;/td&gt;&lt;td valign="top" width="260"&gt;$(".bgRed") 选择所用CSS类为bgRed的元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="157"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/all"&gt;*&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="351"&gt;选择所有元素&lt;/td&gt;&lt;td valign="top" width="259"&gt;$("*")选择页面所有元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="160"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/multiple#selector1selector2selectorN"&gt;selector1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selector2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectorN&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="349"&gt;可以将几个选择器用","分隔开然后再拼成一个选择器字符串.会同时选中这几个选择器匹配的内容.&lt;/td&gt;&lt;td valign="top" width="263"&gt;$("#divId, a, .bgRed")&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;[学习建议]:&lt;/strong&gt; 大家暂时记住基础选择器即可, 可以直接跳到下一节&lt;strong&gt;"jQuery选择器实验室"&lt;/strong&gt;进行动手练习, 以后再回来慢慢学习全部的选择器, 或者用到的时候再回来查询.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.层次选择器 &lt;strong&gt;Hierarchy&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 774px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="173"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="321"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="274"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="178"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/descendant#ancestordescendant"&gt;ancestor descendant&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="318"&gt;使用"form input"的形式选中form中的所有input元素.即ancestor(祖先)为from, descendant(子孙)为input.&lt;/td&gt;&lt;td valign="top" width="273"&gt;$(".bgRed div") 选择CSS类为bgRed的元素中的所有&amp;lt;div&amp;gt;元素.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="181"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/child#parentchild"&gt;parent &amp;gt; child&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="316"&gt;选择parent的直接子节点child.&amp;nbsp; child必须包含在parent中并且父类是parent元素.&lt;/td&gt;&lt;td valign="top" width="272"&gt;$(".myList&amp;gt;li") 选择CSS类为myList元素中的直接子节点&amp;lt;li&amp;gt;对象.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="184"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/next#prevnext"&gt;prev + next&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="315"&gt;prev和next是两个同级别的元素. 选中在prev元素后面的next元素.&lt;/td&gt;&lt;td valign="top" width="272"&gt;$("#hibiscus+img")选在id为hibiscus元素后面的img对象.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/siblings#prevsiblings"&gt;prev ~ siblings&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="314"&gt;&lt;strong&gt; &lt;/strong&gt;选择prev后面的根据siblings过滤的元素&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注:siblings是过滤器&lt;/td&gt;&lt;td valign="top" width="274"&gt;$("#someDiv~[title]")选择id为someDiv的对象后面所有带有title属性的元素&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.基本过滤器 &lt;strong&gt;Basic Filters&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 776px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="171"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="207"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="392"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="175"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/first"&gt;:first&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="206"&gt;匹配找到的第一个元素&lt;/td&gt;&lt;td valign="top" width="390"&gt;查找表格的第一行:$("tr:first")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="178"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/last"&gt;:last&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="206"&gt;匹配找到的最后一个元素&lt;/td&gt;&lt;td valign="top" width="389"&gt;查找表格的最后一行:$("tr:last")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="179"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/not#selector"&gt;:not(selector)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;去除所有与给定选择器匹配的元素&lt;/td&gt;&lt;td valign="top" width="388"&gt;查找所有未选中的 input 元素: $("input:not(:checked)")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="181"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/even"&gt;:even&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;匹配所有索引值为偶数的元素，从 0 开始计数&lt;/td&gt;&lt;td valign="top" width="387"&gt;查找表格的1、3、5...行:$("tr:even")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="182"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/odd"&gt;:odd&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;匹配所有索引值为奇数的元素，从 0 开始计数&lt;/td&gt;&lt;td valign="top" width="387"&gt;查找表格的2、4、6行:$("tr:odd")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="182"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/eq#index"&gt;:eq(index)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;匹配一个给定索引值的元素&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注:index从 0 开始计数&lt;/td&gt;&lt;td valign="top" width="387"&gt;查找第二行:$("tr:eq(1)")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="182"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/gt#index"&gt;:gt(index)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;匹配所有大于给定索引值的元素&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注:index从 0 开始计数&lt;/td&gt;&lt;td valign="top" width="387"&gt;查找第二第三行，即索引值是1和2，也就是比0大:$("tr:gt(0)")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="182"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/lt#index"&gt;:lt(index)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;选择结果集中索引小于 N 的 elements&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注:index从 0 开始计数&lt;/td&gt;&lt;td valign="top" width="387"&gt;查找第一第二行，即索引值是0和1，也就是比2小:$("tr:lt(2)")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="182"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/header"&gt;:header&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;选择所有h1,h2,h3一类的header标签.&lt;/td&gt;&lt;td valign="top" width="387"&gt;给页面内所有标题加上背景色: $(":header").css("background", "#EEE");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="182"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/animated"&gt;:animated&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="205"&gt;匹配所有正在执行动画效果的元素&lt;/td&gt;&lt;td valign="top" width="387"&gt;只有对不在执行动画效果的元素执行一个动画特效:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;$("#run").click(function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $("div:not(:animated)").animate({ left: "+=20" }, 1000);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. 内容过滤器 Content Filters&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 780px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="235"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="229"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="310"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="237"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/contains#text"&gt;:contains(text)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="229"&gt;匹配包含给定文本的元素&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有包含 "John" 的 div 元素:$("div:contains('John')")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="237"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/empty"&gt;:empty&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="229"&gt;匹配所有不包含子元素或者文本的空元素&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有不包含子元素或者文本的空元素:$("td:empty")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="237"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/has#selector"&gt;:has(selector)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="229"&gt;匹配含有选择器所匹配的元素的元素&lt;/td&gt;&lt;td valign="top" width="310"&gt;给所有包含 p 元素的 div 元素添加一个 text 类: $("div:has(p)").addClass("test");&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="237"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/parent"&gt;:parent&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="229"&gt;匹配含有子元素或者文本的元素&lt;/td&gt;&lt;td valign="top" width="311"&gt;查找所有含有子元素或者文本的 td 元素:$("td:parent")&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5.可见性过滤器&amp;nbsp; &lt;strong&gt;Visibility Filters&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 783px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="235"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="309"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/hidden"&gt;:hidden&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="235"&gt;&lt;p&gt;匹配所有的不可见元素&lt;/p&gt;&lt;p&gt;注:在1.3.2版本中, hidden匹配自身或者父类在文档中不占用空间的元素.如果使用CSS visibility属性让其不显示但是占位,则不输入hidden.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="309"&gt;查找所有不可见的 tr 元素:$("tr:hidden")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/visible"&gt;:visible&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="235"&gt;匹配所有的可见元素&lt;/td&gt;&lt;td valign="top" width="309"&gt;查找所有可见的 tr 元素:$("tr:visible")&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;6.属性过滤器 &lt;strong&gt;Attribute Filters&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 778px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="238"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="222"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="312"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="242"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeHas#attribute"&gt;[attribute]&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="220"&gt;匹配包含给定属性的元素&lt;/td&gt;&lt;td valign="top" width="312"&gt;查找所有含有 id 属性的 div 元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("div[id]")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="245"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeEquals#attributevalue"&gt;[attribute=value]&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="219"&gt;匹配给定的属性是某个特定值的元素&lt;/td&gt;&lt;td valign="top" width="312"&gt;查找所有 name 属性是 newsletter 的 input 元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input[name='newsletter']").attr("checked", true);&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="246"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeNotEqual#attributevalue"&gt;[attribute!=value]&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="218"&gt;匹配给定的属性是不包含某个特定值的元素&lt;/td&gt;&lt;td valign="top" width="311"&gt;查找所有 name 属性不是 newsletter 的 input 元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input[name!='newsletter']").attr("checked", true);&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="248"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeStartsWith#attributevalue"&gt;[attribute^=value]&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="217"&gt;匹配给定的属性是以某些值开始的元素&lt;/td&gt;&lt;td valign="top" width="311"&gt;$("input[name^='news']")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="249"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeEndsWith#attributevalue"&gt;[attribute$=value]&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="217"&gt;匹配给定的属性是以某些值结尾的元素&lt;/td&gt;&lt;td valign="top" width="311"&gt;查找所有 name 以 'letter' 结尾的 input 元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input[name$='letter']")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="249"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeContains#attributevalue"&gt;[attribute*=value]&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="217"&gt;&lt;p&gt;匹配给定的属性是以包含某些值的元素&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="311"&gt;&lt;p&gt;查找所有 name 包含 'man' 的 input 元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input[name*='man']")&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="249"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeMultiple#attributeFilter1attributeFilter2attributeFilterN"&gt;[attributeFilter1][attributeFilter2][attributeFilterN]&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="217"&gt;复合属性选择器，需要同时满足多个条件时使用。&lt;/td&gt;&lt;td valign="top" width="313"&gt;找到所有含有 id 属性，并且它的 name 属性是以 man 结尾的:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input[id][name$='man']")&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;7.子元素过滤器 &lt;strong&gt;Child Filters&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 775px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="256"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="223"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="290"&gt;&lt;strong&gt;举例&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="266"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/nthChild#index"&gt;:nth-child(index/even/odd/equation)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="219"&gt;&lt;p&gt;匹配其父元素下的第N个子或奇偶元素&lt;/p&gt;&lt;p&gt;':eq(index)' 只匹配一个元素，而这个将为每一个父元素匹配子元素。:nth-child从1开始的，而:eq()是从0算起的！&lt;/p&gt;&lt;p&gt;可以使用:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nth-child(even)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :nth-child(odd)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :nth-child(3n)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :nth-child(2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :nth-child(3n+1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :nth-child(3n+2)&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="284"&gt;在每个 ul 查找第 2 个li:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("ul li:nth-child(2)")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="276"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/firstChild"&gt;:first-child&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="216"&gt;&lt;p&gt;匹配第一个子元素&lt;/p&gt;&lt;p&gt;':first' 只匹配一个元素，而此选择符将为每个父元素匹配一个子元素&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="279"&gt;在每个 ul 中查找第一个 li:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("ul li:first-child")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="284"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/lastChild"&gt;:last-child&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="214"&gt;&lt;p&gt;匹配最后一个子元素&lt;/p&gt;&lt;p&gt;':last'只匹配一个元素，而此选择符将为每个父元素匹配一个子元素&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="275"&gt;在每个 ul 中查找最后一个 li:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("ul li:last-child")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/onlyChild"&gt;:only-child&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="212"&gt;&lt;p&gt;如果某个元素是父元素中唯一的子元素，那将会被匹配&lt;/p&gt;&lt;p&gt;如果父元素中含有其他元素，那将不会被匹配。&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="277"&gt;在 ul 中查找是唯一子元素的 li:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("ul li:only-child")&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;8.表单选择器 Forms&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 783px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="234"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="310"&gt;&lt;strong&gt;解释&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/input"&gt;:input&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有 input, textarea, select 和 button 元素&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有的input元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":input")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/text"&gt;:text&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有的文本框&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有文本框:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":text")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/password"&gt;:password&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有密码框&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有密码框:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":password")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/radio"&gt;:radio&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有单选按钮&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有单选按钮&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/checkbox"&gt;:checkbox&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有复选框&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有复选框:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":checkbox")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/submit"&gt;:submit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有提交按钮&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有提交按钮:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":submit")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/image"&gt;:image&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;&lt;p&gt;匹配所有图像域&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="310"&gt;匹配所有图像域:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":image")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/reset"&gt;:reset&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有重置按钮&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有重置按钮:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":reset")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/button"&gt;:button&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有按钮&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有按钮:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":button")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="236"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/file"&gt;:file&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="233"&gt;匹配所有文件域&lt;/td&gt;&lt;td valign="top" width="310"&gt;查找所有文件域:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(":file")&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;9.表单过滤器 &lt;strong&gt;Form Filters&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table style="width: 785px;" border="1" cellspacing="1" cellpadding="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="234"&gt;&lt;strong&gt;名称&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="313"&gt;&lt;strong&gt;解释&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="234"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/enabled"&gt;:enabled&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;p&gt;匹配所有可用元素&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="313"&gt;查找所有可用的input元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input:enabled")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="234"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/disabled"&gt;:disabled&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;匹配所有不可用元素&lt;/td&gt;&lt;td valign="top" width="313"&gt;查找所有不可用的input元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input:disabled")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="234"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/checked"&gt;:checked&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;匹配所有选中的被选中元素(复选框、单选框等，不包括select中的option)&lt;/td&gt;&lt;td valign="top" width="313"&gt;查找所有选中的复选框元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("input:checked")&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="234"&gt;&lt;strong&gt;&lt;a href="http://docs.jquery.com/Selectors/selected"&gt;:selected&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;匹配所有选中的option元素&lt;/td&gt;&lt;td valign="top" width="313"&gt;查找所有选中的选项元素:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("select option:selected")&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六 jQuery选择器实验室&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery选择器实验室使用的是"jQuery实战"一书中的代码, 感觉对于学习选择器很有帮助.&lt;/p&gt;&lt;p&gt;我们的实验对象是一个拥有很多元素的页面:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image6.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image6_thumb.png" alt="image" width="368" height="431" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;在实验室页面的"Selector"输入框中输入jQuery选择器表达式,&amp;nbsp; 所有匹配表达式的元素会显示红框:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image_8.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_9E2D/image_thumb_3.png" alt="image" width="644" height="402" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;如上图所示,&amp;nbsp; 在输入".myList"后点击"Apply", 下面的输出框会显示运行结果, 右侧会将选中的元素用红框显示.&lt;/p&gt;&lt;p&gt;代码在本章最后可以下载.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七.API文档&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery官方API: &lt;a title="http://docs.jquery.com/" href="http://docs.jquery.com/"&gt;http://docs.jquery.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;中文在线API: &lt;a title="http://jquery.org.cn/visual/cn/index.xml" href="http://jquery.org.cn/visual/cn/index.xml"&gt;http://jquery.org.cn/visual/cn/index.xml&lt;/a&gt;&lt;/p&gt;&lt;p&gt;中文jQuery手册下载: &lt;a title="http://files.cnblogs.com/zhangziqiu/jquery_api.rar" href="http://files.cnblogs.com/zhangziqiu/jquery_api.rar"&gt;http://files.cnblogs.com/zhangziqiu/jquery_api.rar&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本章节讲解的jQuery依然属于基础支持, 所以没有太多的应用实例.&amp;nbsp; 虽然基础但是很难一次全部记住, jQuery选择器可以说是最考验一个人jQuery功力的地方. 下一章我们讲解如何操作jQuery包装集以及动态创建新元素.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371214.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371214.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371105.html</id><title type="text">从零开始学习jQuery (一) 开天辟地入门篇</title><summary type="text">一.摘要本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍.本篇文章是入门第一篇, 主要是简单介绍jQuery, 通过简单示例指导大家如何编写jQuery代码以及搭建开发环境. 详细讲解了如何在Visual Studio中配合使用jQuery.转载请注明子秋出品!博客园首发!二.前言首先道个歉! "从零开始学习ASP.NET MVC"系列文章在即将介绍Filter时就没有更新了, 原因就是最近我一直在研究和学习jQuery.看到本系列的名称和文章标题, 看过我的MVC系列文章的人会感到很熟</summary><published>2012-02-28T02:37:00Z</published><updated>2012-02-28T02:37:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371105.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371105.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,&amp;nbsp; 即使你会使用jQuery也能在阅读中发现些许秘籍.&lt;/p&gt;&lt;p&gt;本篇文章是入门第一篇, 主要是简单介绍jQuery, 通过简单示例指导大家如何编写jQuery代码以及搭建开发环境. 详细讲解了如何在Visual Studio中配合使用jQuery.&lt;/p&gt;&lt;p&gt;转载请注明子秋出品!博客园首发!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先道个歉! "从零开始学习ASP.NET MVC"系列文章在即将介绍Filter时就没有更新了, 原因就是最近我一直在研究和学习jQuery.看到本系列的名称和文章标题, 看过我的MVC系列文章的人会感到很熟悉. 不久要给公司的人做培训, 所以特意制作了本教程.&lt;/p&gt;&lt;p&gt;在写作的同时我参考了网上jQuery的系列教程文章, 在博客园和Google上并没有找到让我满意的系列教程. 我喜欢将知识系统的,深入浅出的讲解.不喜欢写那种"学习笔记"式的文章. 同时本系列将很快全部写完(有工作压力就是有动力), 随后如果时间允许我会继续更新MVC系列文章.再一次对等待MVC文章的朋友们说声抱歉!&lt;/p&gt;&lt;p&gt;另外本系列文章的大部分知识点来源于图灵出版社的"jQuery实战"一书. 推荐大家购买此书, 是jQuery书籍中的经典之作.&lt;/p&gt;&lt;p&gt;下面让我们开始jQuery之旅.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.什么是jQuery&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery是一套Javascript脚本库.&amp;nbsp; 在我的博客中可以找到"Javascript轻量级脚本库"系列文章. Javascript脚本库类似于.NET的类库, 我们将一些工具方法或对象方法封装在类库中, 方便用户使用.&lt;/p&gt;&lt;p&gt;注意jQuery是脚本库, 而不是脚本框架. "库"不等于"框架", 比如"System程序集"是类库,而"ASP.NET MVC"是框架. jQuery并不能帮助我们解决脚本的引用管理和功能管理,这些都是脚本框架要做的事.&lt;/p&gt;&lt;p&gt;脚本库能够帮助我们完成编码逻辑,实现业务功能. 使用jQuery将极大的提高编写javascript代码的效率, 让写出来的代码更加优雅, 更加健壮. 同时网络上丰富的jQuery插件也让我们的工作变成了"有了jQuery,天天喝茶水"--因为我们已经站在巨人的肩膀上了.&lt;/p&gt;&lt;p&gt;创建一个ASP.NET MVC项目时, 会发现已经自动引入了jQuery类库. jQuery几乎是微软的御用脚本库了!完美的集成度和智能感知的支持,让.NET和jQuery天衣无缝结合在一起!所以用.NET就要选用jQuery而非Dojo,ExtJS等.&lt;/p&gt;&lt;p&gt;jQuery有如下特点:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.提供了强大的功能函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用这些功能函数, 能够帮助我们快速完成各种功能, 而且会让我们的代码异常简洁.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.解决浏览器兼容性问题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;javascript脚本在不同浏览器的兼容性一直是Web开发人员的噩梦,&amp;nbsp; 常常一个页面在IE7,Firefox下运行正常, 在IE6下就出现莫名其妙的问题. 针对不同的浏览器编写不同的脚本是一件痛苦的事情. 有了jQuery我们将从这个噩梦中醒来, 比如在jQuery中的Event事件对象已经被格式化成所有浏览器通用的, 从前要根据event获取事件触发者, 在ie下是event.srcElements 而ff等标准浏览器下下是event.target. jQuery则通过统一event对象,让我们可以在所有浏览器中使用event.target获取事件对象.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.实现丰富的UI&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery可以实现比如渐变弹出, 图层移动等动画效果, 让我们获得更好的用户体验. 单以渐变效果为例, 从前我自己写了一个可以兼容ie和ff的渐变动画, 使用大量javascript代码实现, 费心费力不说, 写完后没有太多帮助过一段时间就忘记了. 再开发类似的功能还要再次费心费力. 如今使用jQuery就可以帮助我们快速完成此类应用.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.纠正错误的脚本知识&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这一条是我提出的, 原因就是大部分开发人员对于javascript存在错误的认识. 比如在页面中编写加载时即执行的操作DOM的语句, 在HTML元素或者document对象上直接添加"onclick"属性,&amp;nbsp; 不知道onclick其实是一个匿名函数等等.&amp;nbsp; 拥有这些错误脚本知识的技术人员也能完成所有的开发工作, 但是这样的程序是不健壮的. 比如"在页面中编写加载时即执行的操作DOM的语句", 当页面代码很小用户加载很快时没有问题, 当页面加载稍慢时就会出现浏览器"终止操作"的错误.jQuery提供了很多简便的方法帮助我们解决这些问题, 一旦使用jQuery你就将纠正这些错误的知识--因为我们都是用标准的正确的jQuery脚本编写方法!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5.太多了! 等待我们一一去发现.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四.Hello World jQuery&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;按照惯例, 我们来编写jQuery的Hello World程序, 来迈出使用jQuery的第一步.&lt;/p&gt;&lt;p&gt;在本文最后可以下本章的完整源代码.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.下载jQuery类库&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery的项目下载放在了Google Code上, 下载地址:&lt;/p&gt;&lt;p&gt;&lt;a title="http://code.google.com/p/jqueryjs/downloads/list" href="http://code.google.com/p/jqueryjs/downloads/list"&gt;http://code.google.com/p/jqueryjs/downloads/list&lt;/a&gt;&lt;/p&gt;&lt;p&gt;上面的地址是总下载列表, 里面有很多版本和类型的jQuery库, 主要分为如下几类:&lt;/p&gt;&lt;p&gt;min: 压缩后的jQuery类库,&amp;nbsp; 在正式环境上使用.如:&lt;a href="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"&gt;jquery-1.3.2.min.js&lt;/a&gt;&lt;/p&gt;&lt;p&gt;vsdoc: 在Visual Studio中需要引入此版本的jquery类库才能启用智能感知.如：&lt;a href="http://jqueryjs.googlecode.com/files/jquery-1.3.2-vsdoc2.js"&gt;jquery-1.3.2-vsdoc2.js &lt;/a&gt;&lt;/p&gt;&lt;p&gt;release包: 里面有没有压缩的jquery代码, 以及文档和示例程序. 如:&lt;a href="http://jqueryjs.googlecode.com/files/jquery-1.3.2-release.zip"&gt;jquery-1.3.2-release.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.编写程序&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;创建一个HTML页面, 引入jQuery类库并且编写如下代码:&lt;/p&gt;&amp;lt;!DOCTYPE html PUBLIC &lt;span class="str"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="str"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;html xmlns=&lt;span class="str"&gt;"http://www.w3.org/1999/xhtml"&lt;/span&gt;&amp;gt;&lt;br/&gt;&amp;lt;head&amp;gt;&lt;br/&gt;    &amp;lt;title&amp;gt;Hello World jQuery!&amp;lt;/title&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt; src=&lt;span class="str"&gt;"scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;&amp;lt;/head&amp;gt;&lt;br/&gt;&amp;lt;body&amp;gt;&lt;br/&gt;    &amp;lt;div id=&lt;span class="str"&gt;"divMsg"&lt;/span&gt;&amp;gt;Hello World!&amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;input id=&lt;span class="str"&gt;"btnShow"&lt;/span&gt; type=&lt;span class="str"&gt;"button"&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;"显示"&lt;/span&gt; /&amp;gt;&lt;br/&gt;    &amp;lt;input id=&lt;span class="str"&gt;"btnHide"&lt;/span&gt; type=&lt;span class="str"&gt;"button"&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;"隐藏"&lt;/span&gt; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br/&gt;    &amp;lt;input id=&lt;span class="str"&gt;"btnChange"&lt;/span&gt; type=&lt;span class="str"&gt;"button"&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;"修改内容为 Hello World, too!"&lt;/span&gt; /&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt; &amp;gt;&lt;br/&gt;        $(&lt;span class="str"&gt;"#btnShow"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, function(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $(&lt;span class="str"&gt;"#divMsg"&lt;/span&gt;).show(); });&lt;br/&gt;        $(&lt;span class="str"&gt;"#btnHide"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, function(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $(&lt;span class="str"&gt;"#divMsg"&lt;/span&gt;).hide(); });&lt;br/&gt;        $(&lt;span class="str"&gt;"#btnChange"&lt;/span&gt;).bind(&lt;span class="str"&gt;"click"&lt;/span&gt;, function(&lt;span class="kwrd"&gt;event&lt;/span&gt;) { $(&lt;span class="str"&gt;"#divMsg"&lt;/span&gt;).html(&lt;span class="str"&gt;"Hello World, too!"&lt;/span&gt;); });      &lt;br/&gt;    &amp;lt;/script&amp;gt;&lt;br/&gt;&amp;lt;/body&amp;gt;&lt;br/&gt;&amp;lt;/html&amp;gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;效果如下:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_14.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_thumb_6.png" alt="image" width="262" height="82" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;页面上有三个按钮, 分别用来控制Hello World的显示,隐藏和修改其内容.&lt;/p&gt;&lt;p&gt;此示例使用了:&lt;/p&gt;&lt;p&gt;(1) jQuery的Id选择器: $(&lt;span class="str"&gt;"#btnShow"&lt;/span&gt;)&lt;/p&gt;&lt;p&gt;(2) 事件绑定函数 bind()&lt;/p&gt;&lt;p&gt;(3) 显示和隐藏函数. show()和hide()&lt;/p&gt;&lt;p&gt;(4) 修改元素内部html的函数html()&lt;/p&gt;&lt;p&gt;在接下来的教程中我们将深入这些内容的学习.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五.启用Visual Studio 对jQuery的智能感知&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先看一下Visual Studio带给我们的智能感知惊喜. 要让Visual Studio支持智能感知, 需要下列条件:&lt;/p&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;安装 VS2008 SP1&lt;/strong&gt; 下载地址: &lt;a title="http://msdn.microsoft.com/en-us/vstudio/cc533448.aspx" href="http://msdn.microsoft.com/en-us/vstudio/cc533448.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/cc533448.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;安装VS 2008 Patch KB958502以支持"-vsdoc.js"Intellisense文件.&lt;/strong&gt; 该补丁会导致Visual Studio在一个JavaScript库被引用时，查找是否存在一个可选的"-vsdoc.js"文件，如果存在的话，就用它来驱动JavaScript intellisense引擎。这些加了注释的"-vsdoc.js"文件可以包含对JavaScript方法提供了帮助文档的XML注释，以及对无法自动推断出的动态JavaScript签名的另外的代码intellisense提示。你可以在"&lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/11/07/hotfix-to-enable-vsdoc-js-intellisense-doc-files-is-now-available.aspx"&gt;这里&lt;/a&gt;"了解该补丁的详情。你可以在"&lt;a href="http://code.msdn.microsoft.com/KB958502/Release/ProjectReleases.aspx?ReleaseId=1736"&gt;这里&lt;/a&gt;"免费下载该补丁。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;必须要引用vsdoc版本的jquery库&lt;/strong&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;在编写脚本的时候, 甚至刚刚输入"$"的时候,VS可以智能提示:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_10.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_thumb_4.png" alt="image" width="277" height="91" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;在使用方法时, 还会有更多的提示:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_8.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_thumb_3.png" alt="image" width="838" height="109" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;有了智能感知我们编写javascript变得和C#一样快速,便捷,舒服.大部分情况可以一次编写成功而不用再为了一个大小写而查询javascript帮助文件.能够让Visual Studio对jQuery实现智能感知的前提是要引入vsdoc版本的jQuery类库. 示例中我们引入了"jquery-1.3.2-vsdoc2.js"文件. 如果引用其他版本比如min版本的jQuery类库就无法启用智能提示.但是在正式环境下, 我们必须要使用"min"版本的jquery库文件, 以1.3.2版本号为例,各个版本的大小如下:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_6.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_thumb_2.png" alt="image" width="310" height="58" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;其中第一个是未压缩的jquery库. 如果启用gzip压缩并且使用min版本的jquery.js可以在传输过程中压缩到19KB.&lt;/p&gt;&lt;p&gt;注意,如果我们更新了脚本, 可以通过"Ctrl+Shift+J"快捷方式更新Visual Studio的智能感知,或者单击 编辑-&amp;gt;IntelliSense-&amp;gt;更新JScript Intellisense:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_4.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_thumb_1.png" alt="image" width="561" height="528" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;为了即能在Visual Studio中增加脚本提示, 又能在上线的时候使用min版本的脚本库, 我们一般是用如下方式引入jQuery库:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 控制编译结果&lt;/strong&gt;&lt;/p&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.2.6.min.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &amp;lt;%&lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;false&lt;/span&gt;)&lt;br/&gt;      { %&amp;gt;&lt;br/&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt; src=&lt;span class="str"&gt;"scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;br/&gt;    &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;} &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;这是网上推荐的方式. 编译后的页面上只有min版本的引用, 同时在开发时能够享受到智能感知.但是注意这种方式&lt;strong&gt;引用的min类库只能是1.2.6或者之前的版本号. 最新的1.3.2的所有非vsdoc版本的jquery库引用后都会导致JScript Intellisense更新出错. &lt;/strong&gt;这是1.3.2版本的一个bug, 期待后续版本中解决. 其实大家完全可以使用1.2.6版本的min库, 本教程涉及的jquery功能, 1.2.6版本基本都支持.&lt;/p&gt;&lt;p&gt;我们使用了if(false)让编译后的页面不包含vsdoc版本jquery库的引用, 同样的思路还可以使用比如将脚本引用放入一个PlaceHolder并设置visible=fasle等.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 使用后端变量&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;为了能使用 1.3.2 版本的min库, 我们只能通过将脚本引用放在变量里, 通过页面输出的方式, 此种方式可以正常更新JScript Intellisense.但是可能有人和我一样不喜欢在前端使用变量:&lt;/p&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:PlaceHolder&lt;/span&gt; &lt;span class="attr"&gt;Visible&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="scripts/jquery-1.3.2-vsdoc2.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:PlaceHolder&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt; =jQueryScriptBlock &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;后台声明变量:&lt;/p&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; jQueryScriptBlock = &lt;span class="str"&gt;@"&amp;lt;script type="&lt;/span&gt;&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&lt;span class="str"&gt;" src="&lt;/span&gt;&lt;span class="str"&gt;"scripts/jquery-1.3.2.min.js"&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;&amp;lt;/script&amp;gt;"&lt;/span&gt;;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六.在独立的.JS文件中启用脚本智能感知&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;上面我们解决了在页面中智能感知的问题, 其实在独立的.js文件中我们同样可以启用脚本的智能感知, 在IntellisenseDemo.js文件中,添加如下语句:&lt;/p&gt;/// &amp;lt;reference path=&lt;span class="str"&gt;"jquery-1.3.2-vsdoc2.js"&lt;/span&gt; /&amp;gt; &lt;p&gt;更新JScript Intellisense, 会发现在脚本中也启用了智能提示:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_2.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQuery_7943/image_thumb.png" alt="image" width="501" height="109" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意,本文中讲解的脚本智能感知不仅适用于jQuery类库, 还适用于自己编写的javascript代码.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本文简单介绍了jQuery, 以及如何搭建脚本开发环境. 示例程序没有复杂的功能, 可能还无法让没有接触过jQuery的人认识到它的强大.但是仅凭借"多浏览器支持"这一特性, 就足以让我们学习并使用jQuery, 因为如今想编写跨浏览器的脚本真的是一件困难的事情!&lt;/p&gt;&lt;p&gt;在后续文章中我们将深入学习jQuery选择器, 事件, 工具函数, 动画, 以及插件等.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371105.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371105.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/engine1984/archive/2012/02/28/2371084.html</id><title type="text">从零开始学习jQuery(剧场版) 你必须知道的javascript</title><summary type="text">一.摘要本文是jQuery系列教程的剧场版, 即和jQuery这条主线无关, 主要介绍大家平时会忽略的一些javascript细节. 适合希望巩固javascript理论知识和基础知识的开发人员阅读.二.前言最近面试过一些人, 发现即使经验丰富的开发人员, 对于一些基础的理论和细节也常常会模糊. 写本文是因为就我自己而言第一次学习下面的内容时发现自己确实有所收获和感悟. 其实我们容易忽视的javascript的细节还有更多, 本文仅是冰山一角. 希望大家都能通过本文有所斩获.三.Javascript面向对象Javascript是一门面向对象的语言, 虽然很多书上都有讲解,但还是有很多初级开发者</summary><published>2012-02-28T02:24:00Z</published><updated>2012-02-28T02:24:00Z</updated><author><name>钢铁心脏</name><uri>http://www.cnblogs.com/engine1984/</uri></author><link rel="alternate" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371084.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371084.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一.摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本文是jQuery系列教程的剧场版, 即和jQuery这条主线无关, 主要介绍大家平时会忽略的一些javascript细节.&amp;nbsp; 适合希望巩固javascript理论知识和基础知识的开发人员阅读.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二.前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;最近面试过一些人, 发现即使经验丰富的开发人员, 对于一些基础的理论和细节也常常会模糊. 写本文是因为就我自己而言第一次学习下面的内容时发现自己确实有所收获和感悟.&amp;nbsp; 其实我们容易忽视的javascript的细节还有更多, 本文仅是冰山一角. 希望大家都能通过本文有所斩获.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三.Javascript面向对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Javascript是一门面向对象的语言,&amp;nbsp; 虽然很多书上都有讲解,但还是有很多初级开发者不了解.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;创建对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;ps: 以前写过一篇详细的创建对象的文章(原型方法, 工厂方法等)但是找不到了, 回头如果还能找到我再添加进来.下面仅仅简单介绍.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;在C#里我们使用new关键字创建对象, 在javascript中也可以使用new关键字:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; objectA = &lt;span class="kwrd"&gt;new&lt;/span&gt; Object();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;但是实际上"new"可以省略:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; objectA = Object();&lt;p&gt;但是我建议为了保持语法一直, &lt;strong&gt;总是带着new关键字声明一个对象.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;创建属性并赋值&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在javascript中属性不需要声明, 在赋值时即自动创建:&lt;/p&gt;objectA.name = &lt;span class="str"&gt;"my name"&lt;/span&gt;;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;访问属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一般我们使用"."来分层次的访问对象的属性:&lt;/p&gt;alert(objectA.name);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;嵌套属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;对象的属性同样可以是任何javascript对象:&lt;/p&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; objectB = objectA;&lt;br/&gt;objectB.other = objectA;&lt;br/&gt;&lt;span class="rem"&gt;//此时下面三个值相当, 并且改变其中任何一个值其余两个值都改变&lt;/span&gt;objectA.name;&lt;br/&gt;objectB.name;&lt;br/&gt;objectB.other.name;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用索引&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果objectA上有一个属性名称为"school.college", 那么我们没法通过"."访问,因为"objectA.school.college"语句是指寻找objectA的school属性对象的college属性.&lt;/p&gt;&lt;p&gt;这种情况我们需要通过索引设置和访问属性:&lt;/p&gt;         objectA[&lt;span class="str"&gt;"school.college"&lt;/span&gt;] = &lt;span class="str"&gt;"BITI"&lt;/span&gt;;&lt;br/&gt;         alert(objectA[&lt;span class="str"&gt;"school.college"&lt;/span&gt;]);&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;下面几个语句是等效的:&lt;/p&gt;        objectA[&lt;span class="str"&gt;"school.college"&lt;/span&gt;] = &lt;span class="str"&gt;"BITI"&lt;/span&gt;;&lt;br/&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; key = &lt;span class="str"&gt;"school.college"&lt;/span&gt;&lt;br/&gt;        alert(objectA[&lt;span class="str"&gt;"school.college"&lt;/span&gt;]);&lt;br/&gt;        alert(objectA[&lt;span class="str"&gt;"school"&lt;/span&gt; + &lt;span class="str"&gt;"."&lt;/span&gt; + &lt;span class="str"&gt;"college"&lt;/span&gt;]);        &lt;br/&gt;        alert(objectA[key]);&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;JSON 格式语法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;JSON是指Javascript Object Notation, 即Javascript对象表示法.&lt;/p&gt;&lt;p&gt;我们可以用下面的语句声明一个对象,同时创建属性:&lt;/p&gt;        &lt;span class="rem"&gt;//JSON&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; objectA = {&lt;br/&gt;            name: &lt;span class="str"&gt;"myName"&lt;/span&gt;,&lt;br/&gt;            age: 19,&lt;br/&gt;            school:&lt;br/&gt;            {&lt;br/&gt;                college: &lt;span class="str"&gt;"大学"&lt;/span&gt;,&lt;br/&gt;                &lt;span class="str"&gt;"high school"&lt;/span&gt;: &lt;span class="str"&gt;"高中"&lt;/span&gt; &lt;br/&gt;            },&lt;br/&gt;            like:[&lt;span class="str"&gt;"睡觉"&lt;/span&gt;,&lt;span class="str"&gt;"C#"&lt;/span&gt;,&lt;span class="str"&gt;"还是睡觉"&lt;/span&gt;]&lt;br/&gt;        }&lt;p&gt;JSON的语法格式是使用"{"和"}"表示一个对象,&amp;nbsp; 使用"属性名称:值"的格式来创建属性, 多个属性用","隔开.&lt;/p&gt;&lt;p&gt;上例中school属性又是一个对象. like属性是一个数组. 使用JSON格式的字符串创建完对象后, 就可以用"."或者索引的形式访问属性:&lt;/p&gt;objectA.school[&lt;span class="str"&gt;"high school"&lt;/span&gt;];&lt;br/&gt;objectA.like[1];&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;静态方法与实例方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;静态方法是指不需要声明类的实例就可以使用的方法.&lt;/p&gt;&lt;p&gt;实例方法是指必须要先使用"new"关键字声明一个类的实例, 然后才可以通过此实例访问的方法.&lt;/p&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt; staticClass() { }; &lt;span class="rem"&gt;//声明一个类&lt;/span&gt;&lt;br/&gt;        staticClass.staticMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;() { alert(&lt;span class="str"&gt;"static method"&lt;/span&gt;) }; &lt;span class="rem"&gt;//创建一个静态方法&lt;/span&gt;&lt;br/&gt;        staticClass.prototype.instanceMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;() { &lt;span class="str"&gt;"instance method"&lt;/span&gt; }; &lt;span class="rem"&gt;//创建一个实例方法&lt;/span&gt;&lt;br/&gt;      &lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;上面首先声明了一个类staticClass, 接着为其添加了一个静态方法staticMethod 和一个动态方法instanceMethod. 区别就在于添加动态方法要使用prototype原型属性.&lt;/p&gt;&lt;p&gt;对于静态方法可以直接调用:&lt;/p&gt;staticClass.staticMethod();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;但是动态方法不能直接调用:&lt;/p&gt;staticClass.instanceMethod(); //语句错误, 无法运行.&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;需要首先实例化后才能调用:&lt;/p&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; instance = &lt;span class="kwrd"&gt;new&lt;/span&gt; staticClass();&lt;span class="rem"&gt;//首先实例化&lt;/span&gt;&lt;br/&gt;        instance.instanceMethod(); //在实例上可以调用实例方法&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四.全局对象是window属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通常我们在&amp;lt;script&amp;gt;标签中声明一个全局变量, 这个变量可以供当前页面的任何方法使用:&lt;/p&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; objectA = &lt;span class="kwrd"&gt;new&lt;/span&gt; Object();&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;然而我们还应该知道, 实际上全局变量objectA是创建在window对象上, 可以通过window对象访问到:&lt;/p&gt;window.objectA&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;五.函数究竟是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们都知道如何创建一个全局函数以及如何调用:&lt;/p&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt; myMethod()&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="str"&gt;"Hello!"&lt;/span&gt;);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        myMethod(); &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;其实同全局对象一样, 使用function关键字创建的方法(也可以创建类)的名称, 实际上是为window对象创建了myMethod属性, 并且值是一个匿名方法, 上面的语句等同于:&lt;/p&gt;        window.myMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="str"&gt;"Hello!"&lt;/span&gt;);&lt;br/&gt;        }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;无论使用哪种方式声明, 实际保存时都是使用函数名创建window对象的属性. 并且值只有函数体没有函数名称.&lt;/p&gt;&lt;p&gt;所以,下面三种声明方式是等效的:&lt;/p&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt; myMethod()&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="str"&gt;"Hello!"&lt;/span&gt;);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        window.myMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="str"&gt;"Hello!"&lt;/span&gt;);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        myMethod = &lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="str"&gt;"Hello!"&lt;/span&gt;);&lt;br/&gt;        }&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&lt;strong&gt;六."this"究竟是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在C#中,this变量通常指类的当前实例. 在javascript则不同, &lt;strong&gt;javascript中的"this"是函数上下文,不是由声明决定,而是由如何调用决定.&lt;/strong&gt;&lt;strong&gt;因为全局函数其实就是window的属性, 所以在顶层调用全局函数时的this是指window对象.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面的例子可以很好的说明这一切:&lt;/p&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; o1 = { name: &lt;span class="str"&gt;"o1 name"&lt;/span&gt; };&lt;br/&gt;        window.name = &lt;span class="str"&gt;"window name"&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt; showName()&lt;br/&gt;        {&lt;br/&gt;            alert(&lt;span class="kwrd"&gt;this&lt;/span&gt;.name);&lt;br/&gt;        }        &lt;br/&gt;        &lt;br/&gt;        o1.show = showName;&lt;br/&gt;        window.show = showName;&lt;br/&gt;&lt;br/&gt;        showName();&lt;br/&gt;        o1.show();&lt;br/&gt;        window.show();&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;结果:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_2.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_thumb.png" alt="image" width="203" height="136" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_8.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_thumb_3.png" alt="image" width="203" height="136" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_6.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_thumb_2.png" alt="image" width="203" height="136" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;结果证明在顶层调用函数和使用window对象调用函数时, this都指向window对象. 而在对象中调用函数时this指向当前对象.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七.javascript中的闭包&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;闭包的概念比较难以理解, 先看闭包的定义:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;闭包是一个拥有许多变量和绑定了这些变量的环境的表达式（通常是一个函数），因而这些变量也是该表达式的一部分。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;简单表达:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;闭包就是function实例以及执行function实例时来自环境的变量.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;先看下面的例子:&lt;/p&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="divResult"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;function&lt;/span&gt; start()&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; count = 0;&lt;br/&gt;            window.setInterval(&lt;span class="kwrd"&gt;function&lt;/span&gt;()&lt;br/&gt;            {&lt;br/&gt;                document.getElementById(&lt;span class="str"&gt;"divResult"&lt;/span&gt;).innerHTML += count + &lt;span class="str"&gt;"&amp;lt;br/&amp;gt;"&lt;/span&gt;;&lt;br/&gt;                count++;&lt;br/&gt;            }, 3000);&lt;br/&gt;        };&lt;br/&gt;        start();&lt;br/&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;style&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;count是start函数体内的变量, 通常我们理解count的作用于是在start()函数内,&amp;nbsp; 在调用start()函数结束后应该也会消失.但是此示例的结果是count变量会一直存在,并且每次被加1:&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_10.png"&gt;&lt;img style="border: 0px currentColor; display: inline;" title="image" src="http://images.cnblogs.com/cnblogs_com/zhangziqiu/WindowsLiveWriter/jQueryjavascript_12A96/image_thumb_4.png" alt="image" width="88" height="91" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;因为count变量是setInterval中创建的匿名函数(就是包含count++的函数)的闭包的一部分!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;再通俗的讲, 闭包首先就是函数本身, 比如上面这个匿名函数本身, 同时加上在这个函数运行时需要用到的count变量.&lt;/p&gt;&lt;p&gt;javascript中的闭包是隐式的创建的, 而不像其他支持闭包的语言那样需要显式创建. 我们在C#语言中很少碰到是因为C#中无法在方法中再次声明方法. 而在一个方法中调用另一个方法通常使用参数传递数据.&lt;/p&gt;&lt;p&gt;本文不再详细讲解闭包, 深入学习请参考下面的文章: &lt;a title="http://www.felixwoo.com/archives/247" href="http://www.felixwoo.com/archives/247"&gt;http://www.felixwoo.com/archives/247&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八.总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;[剧终]&lt;/p&gt;&lt;img src="http://www.cnblogs.com/engine1984/aggbug/2371084.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/engine1984/archive/2012/02/28/2371084.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
