﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-善变与执着</title><link>http://www.blogjava.net/xiaoshevip/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 06:41:26 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 06:41:26 GMT</pubDate><ttl>60</ttl><item><title>使用 jQuery 简化 Ajax 开发</title><link>http://www.blogjava.net/xiaoshevip/archive/2008/01/16/175597.html</link><dc:creator>Boris</dc:creator><author>Boris</author><pubDate>Wed, 16 Jan 2008 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoshevip/archive/2008/01/16/175597.html</guid><wfw:comment>http://www.blogjava.net/xiaoshevip/comments/175597.html</wfw:comment><comments>http://www.blogjava.net/xiaoshevip/archive/2008/01/16/175597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoshevip/comments/commentRss/175597.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoshevip/services/trackbacks/175597.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery 是一个JavaScript 库，它有助于简化 JavaScript&#8482; 以及 Asynchronous JavaScript + XML (Ajax) 编程。与类似的 JavaScript 库不同，jQuery 具有独特的基本原理，可以简洁地表示常见的复杂代码。学习 jQuery 基本原理，探索其特性和功能，执行一些常见的 Ajax 任务并掌握如何使用插件扩展 jQuery。 <br />
<a name="whats-jquery"><span class="atitle"><strong>jQuery 是什么？</strong></span></a>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery 由 John Resig 创建于 2006 年初，对于任何使用 JavaScript 代码的程序员来说，它是一个非常有用的 JavaScript 库。无论您是刚刚接触 JavaScript 语言，并且希望获得一个能解决文档对象模型（Document Object Model，DOM）脚本和 Ajax 开发中一些复杂问题的库，还是作为一个厌倦了 DOM 脚本和 Ajax 开发中无聊的重复工作的资深 JavaScript 专家，jQuery 都会是您的首选。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery 能帮助您保证代码简洁易读。您再也不必编写大堆重复的循环代码和 DOM 脚本库调用了。使用 jQuery，您可以把握问题的要点，并使用尽可能最少的代码实现您想要的功能。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 毫无疑问，jQuery 的原理是独一无二的：它的目的就是保证代码简洁并可重用。当您理解并体会这一原理后，便可以开始学习本教程了，看看 jQuery 对我们的编程方式有多少改进吧。</p>
<p><a name="simplification"><span class="atitle">一些简单的代码简化</span></a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面是一个简单示例，它说明了 jQuery 对代码的影响。要执行一些真正简单和常见的任务，比方说为页面的某一区域中的每个链接附加一个单击（click）事件，您可以使用纯 JavaScript 代码和 DOM 脚本来实现，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#list1">清单 1</a> 所示。</p>
<br />
<a name="list1"><strong style="font-size: 10pt">清单 1. 没有使用 jQuery 的 DOM 脚本</strong></a><br />
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">            var external_links = document.getElementById('external_links');
            var links = external_links.getElementsByTagName('a');
            for (var i=0;i &lt; links.length;i++) {
            var link = links.item(i);
            link.onclick = function() {
            return confirm('You are going to visit: ' + this.href);
            };
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
<p><br />
<a name="list2"><strong style="font-size: 10pt">清单 2. 使用了 jQuery 的 DOM 脚本</strong></a><br />
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">            $('#external_links a').click(function() {
            return confirm('You are going to visit: ' + this.href);
            });</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是不是很神奇？ 使用 jQuery，您可以把握问题的要点，只让代码实现您想要的功能，而省去了一些繁琐的过程。无需对元素进行循环，<code>click()</code> 函数将完成这些操作。同样也不需要进行多个 DOM 脚本调用。您只需要使用一个简短的字符串对所需的元素进行定义即可。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;理解这一代码的工作原理可能会有一点复杂。首先，我们使用了 <code>$()</code> 函数 —— jQuery 中功能最强大的函数。通常，我们都是使用这个函数从文档中选择元素。在本例中，一个包含有一些层叠样式表（Cascading Style Sheet，CSS）语法的字符串被传递给函数，然后 jQuery 尽可能高效地把这些元素找出来。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果您具备 CSS 选择器的基本知识，那么应该很熟悉这些语法。在 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#list2">清单 2</a> 中，<code>#external_links</code> 用于检索 <code>id</code> 为 <code>external_links</code> 的元素。<code>a</code> 后的空格表示 jQuery 需要检索 <code>external_links</code> 元素中的所有 <code>&lt;a&gt;</code> 元素。用英语说起来非常绕口，甚至在 DOM 脚本中也是这样，但是在 CSS 中这再简单不过了。<code>$()</code> 函数返回一个含有所有与 CSS 选择器匹配的元素的 jQuery 对象。<em>jQuery 对象</em> 类似于数组，但是它附带有大量特殊的 jQuery 函数。比方说，您可以通过调用 <code>click</code> 函数把 click 处理函数指定给 jQuery 对象中的所有元素。还可以向 <code>$()</code> 函数传递一个元素或者一个元素数组，该函数将把这些元素封装在一个 jQuery 对象中。您可能会想要使用这个功能将 jQuery 函数用于一些对象，比方说 <code>window</code> 对象。例如，我们通常会像下面这样把函数分配给加载事件：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">window.onload = function() {
            // do this stuff when the page is done loading
            };</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>使用 jQuery 编写的功能相同的代码：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$(window).load(function() {
            // run this when the whole page has been downloaded
            });</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您可能有所体会，等待窗口加载的过程是非常缓慢而且令人痛苦的，这是因为必须等整个页面加载完所有的内容，包括页面上所有的的图片。有的时候，您希望首先完成图片加载，但是在大多数情况下，您只需加载超文本标志语言（Hypertext Markup Language，HTML）就可以了。通过在文档中创建特殊的 <code>ready</code> 事件，jQuery 解决了这个问题，方法如下：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$(document).ready(function() {
            // do this stuff when the HTML is all ready
            });
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这个代码围绕 <code>document</code> 元素创建了一个 jQuery 对象，然后建立一个函数，用于在 HTML DOM 文档就绪的时候调用实例。可以根据需要任意地调用这个函数。并且能够以真正的 jQuery 格式，使用快捷方式调用这个函数。这很简单，只需向 <code>$()</code> 函数传递一个函数就可以了：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$(function() {
            // run this when the HTML is done downloading
            });
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>到目前以止，我已经向大家介绍了 <code>$()</code> 函数的三种用法。第四种方法可以使用字符串来创建元素。结果会产生一个包含该元素的 jQuery 对象。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#list3">清单 3</a> 显示的示例在页面中添加了一个段落。<br />
<a name="list3"><strong style="font-size: 10pt">清单 3. 创建和附加一个简单的段落</strong></a><br />
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">            $('&lt;p&gt;&lt;/p&gt;')
            .html('Hey World!')
            .css('background', 'yellow')
            .appendTo("body");</pre>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p><a name="chaining">在前一个例子中您可能已经注意到，jQuery 中的另一个功能强大的特性就是<em>方法链接（method chaining）</em>。每次对 jQuery 对象调用方法时，方法都会返回相同的 jQuery 对象。这意味着如果您需要对 jQuery 对象调用多个方法，那么您不必重新键入选择器就可以实现这一目的：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('#message').css('background', 'yellow').html('Hello!').show();</pre>
            </td>
        </tr>
    </tbody>
</table>
</a>
<p><a name="simplifying-ajax"><span class="atitle"><strong>使 Ajax 变得简单</strong></span></a></p>
<p>使用 jQuery 将使 Ajax 变得及其简单。jQuery 提供有一些函数，可以使简单的工作变得更加简单，复杂的工作变得不再复杂。</p>
<p>Ajax 最常见的用法就是把一块 HTML 代码加载到页面的某个区域中去。为此，只需简单地选择所需的元素，然后使用 <code>load()</code> 函数即可。下面是一个用于更新统计信息的示例：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('#stats').load('stats.html');</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>通常，我们只需简单地把一些参数传递给服务器中的某个页面。正如您所预料的，使用 jQuery 实现这一操作非常地简单。您可以使用 <code>$.post()</code> 或者 <code>$.get()</code>，这由所需的方法决定。如果需要的话，您还可以传递一个可选的数据对象和回调函数。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#list4">清单 4</a> 显示了一个发送数据和使用回调的简单示例。<br />
<a name="list4"><strong style="font-size: 10pt">清单 4. 使用 Ajax 向页面发送数据</strong></a><br />
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">            $.post('save.cgi', {
            text: 'my string',
            number: 23
            }, function() {
            alert('Your data has been saved.');
            });</pre>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果您确实需要编写一些复杂的 Ajax 脚本，那么需要用到 <code>$.ajax()</code> 函数。您可以指定 <code>xml</code>、<code>script</code>、<code>html</code> 或者 <code>json</code>，jQuery 将自动为回调函数准备合适的结果，这样您便可以立即使用该结果。还可以指定 <code>beforeSend</code>、<code>error</code>、<code>success</code> 或者 <code>complete</code> 回调函数，向用户提供更多有关 Ajax 体验的反馈。此外，还有一些其它的参数可供使用，您可以使用它们设置 Ajax 请求的超时，也可以设置页面 &#8220;最近一次修改&#8221; 的状态。清单 5 显示了一个使用一些我所提到的参数检索 XML 文档的示例。</p>
<br />
<a name="list5"><strong style="font-size: 10pt">清单 5. $.ajax() 使 Ajax 由复杂变简单 </strong></a><br />
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">            $.ajax({
            url: 'document.xml',
            type: 'GET',
            dataType: 'xml',
            timeout: 1000,
            error: function(){
            alert('Error loading XML document');
            },
            success: function(xml){
            // do something with xml
            }
            });
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>当 success 回调函数返回 XML 文档后，您可以使用 jQuery 检索这个 XML 文档，其方式与检索 HTML 文档是一样的。这样使得处理 XML 文档变得相当地容易，并且把内容和数据集成到了您的 Web 站点里面。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#list6">清单 6</a> 显示了 <code>success</code> 函数的一个扩展，它为 XML 中的每个 <code>&lt;item&gt;</code> 元素都添加了一个列表项到 Web 页面中。</p>
<br />
<a name="list6"><strong>清单 6. 使用 jQuery 处理 XML 文档</strong></a><br />
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">            success: function(xml){
            $(xml).find('item').each(function(){
            var item_text = $(this).text();
            $('&lt;li&gt;&lt;/li&gt;')
            .html(item_text)
            .appendTo('ol');
            });
            }
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<p><a name="animation"><span class="atitle">为 HTML 添加动画</span></a></p>
<p>可以使用 jQuery 处理基本的动画和显示效果。<code>animate()</code> 函数是动画代码的核心，它用于更改任何随时间变化的数值型的 CSS 样式值。比方说，您可以变化高度、宽度、不透明度和位置。还可以指定动画的速度，定为毫秒或者预定义的速度：慢速，中速或快速。</p>
<p>下面是一个同时变化某个元素高度和宽度的示例。请注意，这些参数没有开始值，只有最终值。开始值取自元素的当前尺寸。同时我也附加了一个回调函数。</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('#grow').animate({ height: 500, width: 500 }, "slow", function(){
            alert('The element is done growing!');
            });
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>jQuery 的内置函数使更多常见的动画更容易完成。可以使用 <code>show()</code> 和 <code>hide()</code> 元素，立即显示或者以特定的速度显示。还可以通过使用 <code>fadeIn()</code> 和 <code>fadeOut()</code>，或者 <code>slideDown()</code> 和 <code>slideUp()</code> 显示和隐藏元素，这取决于您所需要的显示效果。下面的示例定义了一个下滑的导航菜单。</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('#nav').slideDown('slow');
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<p><a name="dom-and-events"><span class="atitle">DOM 脚本和事件处理</span></a></p>
<p>或许 jQuery 最擅长的就是简化 DOM 脚本和事件处理。遍历和处理 DOM 非常简单，同时附加、移除和调用事件也十分容易，且不像手动操作那样容易出错。</p>
<p>从本质上说，jQuery 可以使 DOM 脚本中的常用操作变得更加容易。您可以创建元素并且使用 <code>append()</code> 函数把它们与其它的一些元素链接到一起，使用 <code>clone()</code> 复制元素，使用 <code>html()</code> 设置内容，使用 <code>empty()</code> 函数删除内容，使用 <code>remove()</code> 函数删除所有的元素，即便是使用 <code>wrap()</code> 函数，用其他元素将这些元素包装起来。</p>
<p>通过遍历 DOM，一些函数可以用于更改 jQuery 对象本身的内容。可以获得元素所有的 <code>siblings()</code>、<code>parents()</code> 和 <code>children()</code>。还可以选择 <code>next()</code> 和 <code>prev()</code> 兄弟元素。<code>find()</code> 函数或许是功能最强大的函数，它允许使用 jQuery 选择器搜索 jQuery 对象中元素的后代元素。</p>
<p>如果结合使用 <code>end()</code> 函数，那么这些函数将变得更加强大。这个函数的功能类似于 undo 函数，用于返回到调用 <code>find()</code> 或 <code>parents()</code> 函数（或者其它遍历函数）之前的 jQuery 对象。</p>
<p>如果配合方法链接（method chaining）一起使用，这些函数可以使复杂的操作看上去非常简单。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#list7">清单 7 </a>显示了一个示例，其中包含有一个登录表单并处理了一些与之有关的元素。</p>
<br />
<a name="list7"><strong>清单 7. 轻松地遍历和处理 DOM</strong></a><br />
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">            $('form#login')
            // hide all the labels inside the form with the 'optional' class
            .find('label.optional').hide().end()
            // add a red border to any password fields in the form
            .find('input:password').css('border', '1px solid red').end()
            // add a submit handler to the form
            .submit(function(){
            return confirm('Are you sure you want to submit?');
            });
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>不管您是否相信，这个示例只是一行满是空白的被链接的代码。首先，选择登录表单。然后，发现其中含有可选标签，隐藏它们，并调用 <code>end()</code> 返回表单。然后，我创建了密码字段，将其边界变为红色，再次调用 <code>end()</code> 返回表单。最后，我在表单中添加了一个提交事件处理程序。其中尤为有趣的就是（除了其简洁性以外），jQuery 完全优化了所有的查询操作，确保将所有内容很好地链接在一起后，不需要对一个元素执行两次查询。</p>
<p>处理常见事件就像调用函数（比方说 <code>click()</code>、<code>submit()</code> 或 <code>mouseover()</code>）和为其传递事件处理函数一样简单。此外，还可以使用 <code>bind('eventname', function(){})</code> 指定自定义的事件处理程序。可以使用 <code>unbind('eventname')</code> 删除某些事件或者使用 <code>unbind()</code> 删除所有的事件。有关这些函数的使用方法的完整列表，请参阅 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#resources">参考资料</a> 中的 jQuery 应用程序编程接口（Application Program Interface，API）文档。</p>
<p><a name="selectors"><span class="atitle">释放 jQuery 选择器的强大能量</span></a></p>
<p>我们经常会使用 ID 来选择元素，比如 <code>#myid</code>，或者通过类名，比如 <code>div.myclass</code> 来选择元素。然而，jQuery 提供了更为复杂和完整的选择器语法，允许我们在单个选择器中选择几乎所有的元素组合。</p>
<p>jQuery 的选择器语法主要是基于 CSS3 和 XPath 的。对 CSS3 和 XPath 了解的越多，使用 jQuery 时就越加得心应手。有关 jQuery 选择器的完整列表，包括 CSS 和 XPath，请参阅 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#resources">参考资料</a> 中的链接。</p>
<p>CSS3 包含一些并不是所有浏览器都支持的语法，因此我们很少使用它。然而，我们仍然可以在 jQuery 中使用 CSS3 选择元素，因为 jQuery 具备自己的自定义选择器引擎。比方说，要在表格中的每一个空列中都添加一个横杠，可以使用：<code>:empty</code> 伪选择器（pseudo-selector）：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('td:empty').html('-');
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>如果需要找出所有<strong>不</strong>含特定类的元素呢？ CSS3 同样提供了一个语法可以完成这个目的，使用 <code>:not</code> 伪选择器： 如下代码显示了如何隐藏所有不含 <code>required</code> 类的输入内容：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('input:not(.required)').hide();
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>与在 CSS 中一样，可以使用逗号将多个选择器连接成一个。下面是一个同时隐藏页面上所有类型列表的简单示例：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('ul, ol, dl').hide();
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>XPath 是一种功能强大的语法，用于在文档中搜寻元素。它与 CSS 稍有区别，不过它能实现的功能略多于 CSS。要在所有复选框的父元素中添加一个边框，可以使用 XPath 的 <code>/..</code> 语法：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$("input:checkbox/..").css('border', '1px solid #777');
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>jQuery 中也加入了一些 CSS 和 XPath 中没有的选择器。比方说，要使一个表更具可读性，通常可以在表格的奇数行或偶数行中附加一个不同的类名 —— 也可以称作把表<em>分段（striping）</em>。使用 jQuery 不费吹灰之力就可以做到这点，这需要归功于 <code>odd</code> 伪选择器。下面这个例子使用 <code>striped</code> 类改变了表格中所有奇数行的背景颜色：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$('table.striped &gt; tr:odd').css('background', '#999999');
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>我们可以看到强大的 jQuery 选择器是如何简化代码的。不论您想处理什么样的元素，不管这个元素是具体的还是模糊的，都有可能找到一种方法使用一个 jQuery选择器对它们进行定义。</p>
<p><a name="plugins"><span class="atitle">使用插件扩展 jQuery</span></a></p>
<p>与大多数软件不同，使用一个复杂的 API 为 jQuery 编写插件并不是非常困难。事实上，jQuery 插件非常易于编写，您甚至希望编写一些插件来使代码更加简单。下面是可以编写的最基本的 jQuery 插件：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$.fn.donothing = function(){
            return this;
            };
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>虽然非常简单，但是还是需要对这个插件进行一些解释。首先，如果要为每一个 jQuery 对象添加一个函数，必须把该函数指派给 <code>$.fn</code>。第二，这个函数必须要返回一个 <code>this</code>（jQuery 对象），这样才不至于打断 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#chaining">方法链接（method chaining）</a>。</p>
<p>可以轻松地在这个示例之上构建。要编写一个更换背景颜色的插件，以替代使用 <code>css('background')</code>，可以使用下面的代码：</p>
<table cellspacing="0" cellpadding="0" width="60%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">$.fn.background = function(bg){
            return this.css('background', bg);
            };
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>清注意，可以只从 <code>css()</code> 返回值，因为已经返回了 jQuery 对象。因此，方法链接（method chaining）仍然运作良好。</p>
<p>我建议在需要重复工作的时候使用 jQuery 插件。比方说，如果您需要使用 <code>each()</code> 函数反复执行相同的操作，那么可以使用一个插件来完成。</p>
<p>由于 jQuery 插件相当易于编写，所以有上百种可供你选择使用。jQuery 提供的插件可用于制表、圆角、滑动显示、工具提示、日期选择器，以及我们可以想到的一切效果。有关插件的完整列表，请参阅 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxjquery.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#resources">参考资料</a>。</p>
<p>最为复杂、使用最为广泛的插件要属界面（Interface），它是一种动画插件，用于处理排序、拖放功能、复杂效果、以及其它有趣和复杂的用户界面（User Interface，UI）。界面对于 jQuery 来说就如 Scriptaculous 对于 Prototype 一样。</p>
<p>表单插件也同样流行且非常有用，通过它可以使用 Ajax 在后台中轻松地提交表单。这个插件用于处理一些常见的情况：您需要截获某个表单的提交事件，找出所有不同的输入字段，并使用这些字段构造一个 Ajax 调用。</p>
<img src ="http://www.blogjava.net/xiaoshevip/aggbug/175597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoshevip/" target="_blank">Boris</a> 2008-01-16 10:03 <a href="http://www.blogjava.net/xiaoshevip/archive/2008/01/16/175597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>