<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT北瓜 &#187; jQuery学习笔记</title>
	<atom:link href="http://imleeo.com/category/special-series/jquery-study-notes/feed" rel="self" type="application/rss+xml" />
	<link>http://imleeo.com</link>
	<description>关注jQuery,关注java,关注计算机应用,关注生活...</description>
	<lastBuildDate>Tue, 06 Jul 2010 05:30:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>jQuery学习笔记8&#8212;&#8212;jQuery性能优化指南【转】</title>
		<link>http://imleeo.com/jquery/jquery-study-notes-8-optimization.html</link>
		<comments>http://imleeo.com/jquery/jquery-study-notes-8-optimization.html#comments</comments>
		<pubDate>Thu, 12 Nov 2009 07:32:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[性能优化]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/jquery-study-notes-8-optimization.html</guid>
		<description><![CDATA[<p>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&#60;<a href="http://www.artzstudio.com/2009/04/jquery-performance-rules/">jQuery Performance Rules</a>&#62;这篇文章, 简单的摘译了一下:</p>

<ol>
  <li>总是从ID选择器开始继承 </li>

  <li>在class前使用tag </li>

  <li>将jquery对象缓存起来 </li>

  <li>掌握强大的链式操作 </li>

  <li>使用子查询 </li>

  <li>对直接的DOM操作进行限制 </li>

  <li>冒泡 </li>

  <li>消除无效查询 </li>

  <li>推迟到 $(window).load </li>

  <li>压缩js </li>

  <li>全面掌握jquery库</li>
</ol>

<h5><strong>1. 总是从ID选择器开始继承</strong></h5>

<p>在jquery中最快的选择器是ID选择器。因为它直接来自于Javascript的getElementById()方法.</p>

<pre class="csharpcode"><span class="kwrd">&#60;</span><span class="html">div</span> <span class="attr">id</span><span class="kwrd">=&#34;content&#34;</span><span class="kwrd">&#62;</span>
    <span class="kwrd">&#60;</span><span class="html">form</span> <span class="attr">method</span><span class="kwrd">=&#34;post&#34;</span> <span class="attr">action</span><span class="kwrd">=&#34;/&#34;</span><span class="kwrd">&#62;</span>
        <span class="kwrd">&#60;</span><span class="html">h2</span><span class="kwrd">&#62;</span>Traffic Light<span class="kwrd">&#60;/</span><span class="html">h2</span><span class="kwrd">&#62;</span>
        <span class="kwrd">&#60;</span><span class="html">ul</span> <span class="attr">id</span><span class="kwrd">=&#34;traffic_light&#34;</span><span class="kwrd">&#62;</span>
            <span class="kwrd">&#60;</span><span class="html">li</span><span class="kwrd">&#62;&#60;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&#34;radio&#34;</span> <span class="attr">class</span><span class="kwrd">=&#34;on&#34;</span> <span class="attr">name</span><span class="kwrd">=&#34;light&#34;</span> <span class="attr">value</span><span class="kwrd">=&#34;red&#34;</span> <span class="kwrd">/&#62;</span> Red<span class="kwrd">&#60;/</span><span class="html">li</span><span class="kwrd">&#62;</span>
            <span class="kwrd">&#60;</span><span class="html">li</span><span class="kwrd">&#62;&#60;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&#34;radio&#34;</span> <span class="attr">class</span><span class="kwrd">=&#34;off&#34;</span> <span class="attr">name</span><span class="kwrd">=&#34;light&#34;</span> <span class="attr">value</span><span class="kwrd">=&#34;yellow&#34;</span> <span class="kwrd">/&#62;</span> Yellow<span class="kwrd">&#60;/</span><span class="html">li</span><span class="kwrd">&#62;</span>
            <span class="kwrd">&#60;</span><span class="html">li</span><span class="kwrd">&#62;&#60;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&#34;radio&#34;</span> <span class="attr">class</span><span class="kwrd">=&#34;off&#34;</span> <span class="attr">name</span><span class="kwrd">=&#34;light&#34;</span> <span class="attr">value</span><span class="kwrd">=&#34;green&#34;</span> <span class="kwrd">/&#62;</span> Green<span class="kwrd">&#60;/</span><span class="html">li</span><span class="kwrd">&#62;</span>
        <span class="kwrd">&#60;/</span><span class="html">ul</span><span class="kwrd">&#62;</span>
        <span class="kwrd">&#60;</span><span class="html">input</span> <span class="attr">class</span><span class="kwrd">=&#34;button&#34;</span> <span class="attr">id</span><span class="kwrd">=&#34;traffic_button&#34;</span> <span class="attr">type</span><span class="kwrd">=&#34;submit&#34;</span> <span class="attr">value</span><span class="kwrd">=&#34;Go&#34;</span> <span class="kwrd">/&#62;</span>
    <span class="kwrd">&#60;/</span><span class="html">form</span><span class="kwrd">&#62;</span>
<span class="kwrd">&#60;/</span><span class="html">div</span><span class="kwrd">&#62;</span></pre>
<style type="text/css">
.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; }</style>

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&lt;<a href="http://www.artzstudio.com/2009/04/jquery-performance-rules/">jQuery Performance Rules</a>&gt;这篇文章, 简单的摘译了一下:</p>
<ol>
<li>总是从ID选择器开始继承 </li>
<li>在class前使用tag </li>
<li>将jquery对象缓存起来 </li>
<li>掌握强大的链式操作 </li>
<li>使用子查询 </li>
<li>对直接的DOM操作进行限制 </li>
<li>冒泡 </li>
<li>消除无效查询 </li>
<li>推迟到 $(window).load </li>
<li>压缩js </li>
<li>全面掌握jquery库 </li>
</ol>
<h5><strong>1. 总是从ID选择器开始继承</strong></h5>
<p>在jquery中最快的选择器是ID选择器。因为它直接来自于Javascript的getElementById()方法.</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">div</span> <span class="attr">id</span><span class="kwrd">=&quot;content&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">form</span> <span class="attr">method</span><span class="kwrd">=&quot;post&quot;</span> <span class="attr">action</span><span class="kwrd">=&quot;/&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">h2</span><span class="kwrd">&gt;</span>Traffic Light<span class="kwrd">&lt;/</span><span class="html">h2</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">ul</span> <span class="attr">id</span><span class="kwrd">=&quot;traffic_light&quot;</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;on&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;red&quot;</span> <span class="kwrd">/&gt;</span> Red<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;yellow&quot;</span> <span class="kwrd">/&gt;</span> Yellow<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;green&quot;</span> <span class="kwrd">/&gt;</span> Green<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">ul</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">input</span> <span class="attr">class</span><span class="kwrd">=&quot;button&quot;</span> <span class="attr">id</span><span class="kwrd">=&quot;traffic_button&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;submit&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;Go&quot;</span> <span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">form</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
<p>.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; }</style>
<p>像这样选择按钮是低效的：</p>
<pre class="csharpcode"><span class="kwrd">var</span> traffic_button = $(<span class="str">'#content .button'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p>用ID直接选择按钮效率更高：</p>
<pre class="csharpcode"><span class="kwrd">var</span> traffic_button = $(<span class="str">'#traffic_button'</span>);</pre>
<pre class="csharpcode"><strong>选择多个元素</strong></pre>
<style type="text/css">
<p>.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; }</style>
<h4>提到多元素选择其实是在说DOM遍历和循环，这些都是比较慢的东西。为了提高性能，最好从就近的ID开始继承</h4>
<pre class="csharpcode"><span class="kwrd">var</span> traffic_lights = $(<span class="str">'#traffic_light input'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p><strong>2. 在class前使用tag</strong> </p>
<p>第二快的选择器是tag选择器($(’head’))。同理，因为它来自原生的getElementsByTagName()方法。</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">div</span> <span class="attr">id</span><span class="kwrd">=&quot;content&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">form</span> <span class="attr">method</span><span class="kwrd">=&quot;post&quot;</span> <span class="attr">action</span><span class="kwrd">=&quot;/&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">h2</span><span class="kwrd">&gt;</span>Traffic Light<span class="kwrd">&lt;/</span><span class="html">h2</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">ul</span> <span class="attr">id</span><span class="kwrd">=&quot;traffic_light&quot;</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;on&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;red&quot;</span> <span class="kwrd">/&gt;</span> Red<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;yellow&quot;</span> <span class="kwrd">/&gt;</span> Yellow<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;green&quot;</span> <span class="kwrd">/&gt;</span> Green<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">ul</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">input</span> <span class="attr">class</span><span class="kwrd">=&quot;button&quot;</span> <span class="attr">id</span><span class="kwrd">=&quot;traffic_button&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;submit&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;Go&quot;</span> <span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">form</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
<p>.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; }</style>
<p>总是用一个tag name来限制(修饰)class (并且不要忘记就近的ID)：</p>
<pre class="csharpcode"><span class="kwrd">var</span> active_light = $(<span class="str">'#traffic_light input.on'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p>注意: 在jquery中Class是最慢的选择器。IE浏览器下它会遍历所有DOM节点不管它用在那里。 </p>
<p>不要用用tag name来修饰ID。下面的例子将会遍历所有的div元素来查找id为’content’的哪一个节点：</p>
<pre class="csharpcode"><span class="kwrd">var</span> content = $(<span class="str">'div#content'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p>用ID修饰ID也是画蛇添足：</p>
<pre class="csharpcode"><span class="kwrd">var</span> traffic_light = $(<span class="str">'#content #traffic_light'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p><strong>3.将jquery对象缓存起来 </strong></p>
<p>要养成将jquery对象缓存进变量的习惯。 </p>
<p>永远不要这样做：</p>
<pre class="csharpcode">$(<span class="str">'#traffic_light input.on).bind('</span>click<span class="str">', function(){...});
$('</span>#traffic_light input.on).css(<span class="str">'border'</span>, <span class="str">'3px dashed yellow'</span>);
$(<span class="str">'#traffic_light input.on).css('</span>background-color<span class="str">', '</span>orange<span class="str">');
$('</span>#traffic_light input.on).fadeIn(<span class="str">'slow'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p>最好先将对象缓存进一个变量然后再操作：</p>
<pre class="csharpcode"><span class="kwrd">var</span> $active_light = $(<span class="str">'#traffic_light input.on'</span>);
$active_light.bind(<span class="str">'click'</span>, <span class="kwrd">function</span>(){...});
$active_light.css(<span class="str">'border'</span>, <span class="str">'3px dashed yellow'</span>);
$active_light.css(<span class="str">'background-color'</span>, <span class="str">'orange'</span>);
$active_light.fadeIn(<span class="str">'slow'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p>为了记住我们本地变量是jquery的封装, 通常用一个$作为变量前缀. 记住,永远不要让相同的选择器在你的代码里出现多次。 </p>
<p>缓存jquery结果，备用<br />
  <br />如果你打算将jquery结果对象用在程序的其它部分，或者你的function会多次执行, 那么就将他们缓存到一个全局变量中。 </p>
<p>定义一个全局容器来存放jquery结果，我们就可以在其它函数引用它们：</p>
<pre class="csharpcode"><span class="rem">// 在全局范围定义一个对象 (例如: window对象)</span>
window.$my = {
    <span class="rem">//初始化所有可能会不止一次要使用的查询</span>
    head: $(<span class="str">'head'</span>),
    traffic_light: $(<span class="str">'#traffic_light'</span>),
    traffic_button: $(<span class="str">'#traffic_button'</span>)
};
<span class="kwrd">function</span> do_something() {
    <span class="rem">//现在你可以引用存储的结果并操作它们</span>
    <span class="kwrd">var</span> script = document.createElement(<span class="str">'script'</span>);
    $my.head.append(script);

    <span class="rem">// 当你在函数内部操作是, 可以继续将查询存入全局对象中去.</span>
    $my.cool_results = $(<span class="str">'#some_ul li'</span>);
    $my.other_results = $(<span class="str">'#some_table td'</span>);

    <span class="rem">//将全局函数作为一个普通的jquery对象去使用.</span>
    $my.other_results.css(<span class="str">'border-color'</span>, <span class="str">'red'</span>);
    $my.traffic_light.css(<span class="str">'border-color'</span>, <span class="str">'green'</span>);
}</pre>
<style type="text/css">
<p>.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; }</style>
<p><strong>4. 掌握强大的链式操作</strong> </p>
<p>上面的例子也可以写成这样：</p>
<pre class="csharpcode"><span class="kwrd">var</span> $active_light = $(<span class="str">'#traffic_light input.on'</span>);
$active_light.bind(<span class="str">'click'</span>, <span class="kwrd">function</span>(){...})
    .css(<span class="str">'border'</span>, <span class="str">'3px dashed yellow'</span>)
    .css(<span class="str">'background-color'</span>, <span class="str">'orange'</span>)
    .fadeIn(<span class="str">'slow'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p>这样可以写更少的代码, 让我们的js更轻量。 </p>
<p><strong>5.使用子查询</strong> </p>
<p>jQuery 允许我们对一个已包装的对象使用附加的选择器操作。因为我们已经在保存了一个父级对象在变量里，这样大大提高对其子元素的操作：</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">div</span> <span class="attr">id</span><span class="kwrd">=&quot;content&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">form</span> <span class="attr">method</span><span class="kwrd">=&quot;post&quot;</span> <span class="attr">action</span><span class="kwrd">=&quot;/&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">h2</span><span class="kwrd">&gt;</span>Traffic Light<span class="kwrd">&lt;/</span><span class="html">h2</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">ul</span> <span class="attr">id</span><span class="kwrd">=&quot;traffic_light&quot;</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;on&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;red&quot;</span> <span class="kwrd">/&gt;</span> Red<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;yellow&quot;</span> <span class="kwrd">/&gt;</span> Yellow<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;green&quot;</span> <span class="kwrd">/&gt;</span> Green<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">ul</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">input</span> <span class="attr">class</span><span class="kwrd">=&quot;button&quot;</span> <span class="attr">id</span><span class="kwrd">=&quot;traffic_button&quot;</span> <span class="attr">type</span><span class="kwrd">=&quot;submit&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;Go&quot;</span> <span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">form</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
<p>.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; }</style>
<p>例如，我们可以用子查询的方法来抓取到亮或不亮的灯，并缓存起来以备后续操作。</p>
<pre class="csharpcode"><span class="kwrd">var</span> $traffic_light = $(<span class="str">'#traffic_light'</span>),
    $active_light = $traffic_light.find(<span class="str">'input.on'</span>),
    $inactive_lights = $traffic_light.find(<span class="str">'input.off'</span>);</pre>
<style type="text/css">
<p>.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; }</style>
<p>提示：你可以用逗号分隔的方法一次声明多个局部变量–节省字节数</p>
<p><strong>6.对直接的DOM操作进行限制</strong> </p>
<p>这里的基本思想是在内存中建立你确实想要的东西，然后更新DOM。这并不是一个jQuery最佳实践，但必须进行有效的JavaScript操作。直接的DOM操作速度很慢。 </p>
<p>例如，你想动态的创建一组列表元素，千万不要这么做：</p>
<pre class="csharpcode"><span class="kwrd">var</span> top_100_list = [...], <span class="rem">// 假设这里是100个独一无二的字符串</span>
    $mylist = $(<span class="str">'#mylist'</span>); <span class="rem">// jQuery 选择到 &lt;ul&gt; 元素</span>

<span class="kwrd">for</span> (<span class="kwrd">var</span> i=0, l=top_100_list.length; i&lt;l; i++) {
    $mylist.append(<span class="str">'&lt;li&gt;'</span> + top_100_list[i] + <span class="str">'&lt;/li&gt;'</span>);
}</pre>
<style type="text/css">
<p>.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; }</style>
<p>我们应该将整套元素字符串在插入进dom中之前全部创建好：</p>
<pre class="csharpcode"><span class="kwrd">var</span> top_100_list = [...], <span class="rem">// 假设这里是100个独一无二的字符串</span>
    $mylist = $(<span class="str">'#mylist'</span>), <span class="rem">// jQuery selects our &lt;ul&gt; element</span>
    top_100_li = <span class="str">&quot;&quot;</span>; <span class="rem">// 这个变量将用来存储我们的列表元素</span>

<span class="kwrd">for</span> (<span class="kwrd">var</span> i=0, l=top_100_list.length; i&lt;l; i++) {
    top_100_li += <span class="str">'&lt;li&gt;'</span> + top_100_list[i] + <span class="str">'&lt;/li&gt;'</span>;
}
$mylist.html(top_100_li);</pre>
<style type="text/css">
<p>.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; }</style>
<p>我们在插入之前将多个元素包裹进一个单独的父级节点会更快：</p>
<pre class="csharpcode"><span class="kwrd">var</span> top_100_list = [...], <span class="rem">// 假设这里是100个独一无二的字符串</span>
    $mylist = $(<span class="str">'#mylist'</span>),  <span class="rem">// jQuery 选择到 &lt;ul&gt; 元素</span>
    top_100_ul = <span class="str">'&lt;ul id=&quot;#mylist&quot;&gt;'</span>; <span class="rem">// 这个变量将用来存储我们的列表元素</span>

<span class="kwrd">for</span> (<span class="kwrd">var</span> i=0, l=top_100_list.length; i&lt;l; i++){
    top_100_ul += <span class="str">'&lt;li&gt;'</span> + top_100_list[i] + <span class="str">'&lt;/li&gt;'</span>;
}
top_100_ul += <span class="str">'&lt;/ul&gt;'</span>; <span class="rem">//关闭无序列表</span>

$mylist.replaceWith(top_100_ul);</pre>
<style type="text/css">
<p>.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; }</style>
<p>如果你做了以上几条还是担心有性能问题，那么： </p>
<p>试试jquery的 clone() 方法，它会创建一个节点树的副本，它允许以”离线”的方式进行dom操作，当你操作完成后再将其放回到节点树里。<br />
  <br />使用<a href="http://www.devguru.com/technologies/xmldom/quickref/obj_documentFragment.html" target="_blank">DOM DocumentFragments</a>。正如jQuery作者所言，它的性能要明显优于直接的dom操作。 </p>
<p><strong>7. 冒泡</strong> </p>
<p>除非在特殊情况下，否则每一个js事件(例如:click, mouseover, 等)都会冒泡到父级节点。当我们需要给多个元素调用同个函数时这点会很有用。 </p>
<p>代替这种效率很差的多元素事件监听的方法就是，你只需向它们的父节点绑定一次，并且可以计算出哪个节点触发了事件。 </p>
<p>例如，我们要为一个拥有很多输入框的表单绑定这样的行为：当输入框被选中时为它添加一个class </p>
<p>像这样绑定事件是低效的：</p>
<pre class="csharpcode">$(<span class="str">'#entryform input).bind('</span>focus<span class="str">', function(){
    $(this).addClass('</span>selected<span class="str">');
}).bind('</span>blur<span class="str">', function(){
    $(this).removeClass('</span>selected');
});</pre>
<style type="text/css">
<p>.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; }</style>
<p>我们需要在父级监听获取焦点和失去焦点的事：</p>
<pre class="csharpcode">$(<span class="str">'#entryform).bind('</span>focus<span class="str">', function(e){
    var cell = $(e.target);  // e.target grabs the node that triggered the event.
    cell.addClass('</span>selected<span class="str">');
}).bind('</span>blur<span class="str">', function(e){
    var cell = $(e.target);
    cell.removeClass('</span>selected');
});</pre>
<style type="text/css">
<p>.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; }</style>
<p>父级元素扮演了一个调度员的角色，它可以基于目标元素绑定事件。如果你发现你给很多元素绑定了同一个事件监听，那么你肯定哪里做错了。 </p>
<p><strong>8.消除无效查询</strong> </p>
<p>尽管jquery可以很优雅的处理没有匹配元素的情况，但它还是需要花费时间去寻找。如果你整站只有一个全局js，那么极有可能把所有的jquery函数塞进$(document)ready(function(){//所有你引以为傲的代码})里。 </p>
<p>只运行在页面里用到的函数。大多数有效的方法就是使用行内初始化函数，这样你的模板就能准确的控制何时何处该执行js。 </p>
<p>例如，你的”文章”页面模板，你可能会引用如下的代码在body结束处：</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">type</span>=&quot;<span class="attr">text</span>/<span class="attr">javascript</span><span class="kwrd">&gt;</span>
    mylib.article.init();
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">body</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
<p>.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; }</style>
<p>如果你的页面模板包含一些多变的模块可能不会出现在页面中，或者为了视觉呈现的原因你需要它们能够快速加载，你可以将初始化函数紧跟在模块之后。</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">ul</span> <span class="attr">id</span><span class="kwrd">=&quot;traffic_light&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;on&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;red&quot;</span> <span class="kwrd">/&gt;</span> Red<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;yellow&quot;</span> <span class="kwrd">/&gt;</span> Yellow<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">li</span><span class="kwrd">&gt;&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">=&quot;radio&quot;</span> <span class="attr">class</span><span class="kwrd">=&quot;off&quot;</span> <span class="attr">name</span><span class="kwrd">=&quot;light&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;green&quot;</span> <span class="kwrd">/&gt;</span> Green<span class="kwrd">&lt;/</span><span class="html">li</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">ul</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">type</span>=&quot;<span class="attr">text</span>/<span class="attr">javascript</span><span class="kwrd">&gt;</span>
    mylib.traffic_light.init();
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">
<p>.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; }</style>
<p>你的全局js库可能会是这样子的：</p>
<pre class="csharpcode"><span class="kwrd">var</span> mylib = {
    article_page: {
        init : <span class="kwrd">function</span>() {
            <span class="rem">// Article 特有的jQuery函数.</span>
        }
    },
    traffic_light: {
        init: <span class="kwrd">function</span>() {
            <span class="rem">// Traffic light 特有的jQuery函数.</span>
        }
    }
}</pre>
<style type="text/css">
<p>.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; }</style>
<p><strong>9. 推迟到 $(window).load</strong> </p>
<p>jquery对于开发者来说有一个很诱人的东西，可以把任何东西挂到$(document).ready下冒充事件。在大多数例子中你都会发现这样的情况。 </p>
<p>尽管$(document).rady 确实很有用，它可以在页面渲染时,其它元素还没下载完成就执行。如果你发现你的页面一直是载入中的状态，很有可能就是$(document).ready函数引起的。 </p>
<p>你可以通过将jquery函数绑定到$(window).load 事件的方法来减少页面载入时的cpu使用率。它会在所有的html(包括&lt;iframe&gt;)被下载完成后执行。</p>
<pre class="csharpcode">$(window).load(<span class="kwrd">function</span>(){
    <span class="rem">// 页面完全载入后才初始化的jQuery函数.</span>
});</pre>
<style type="text/css">
<p>.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; }</style>
<p>多余的功能例如拖放，视觉特效和动画，预载入隐藏图像，等等。都是适合这种技术的场合。 </p>
<p><strong>10. 压缩js</strong> </p>
<p>推荐一个js在线压缩地址：<a href="http://dean.edwards.name/packer/">http://dean.edwards.name/packer/</a></p>
<p><strong>11. 全面掌握jquery库</strong> </p>
<p>知己知彼，百战百胜。只有更深入的了解jQuery才能更灵活的使用它。这里提供一个jQuery的速查手册，可以打印出来随身携带。要是有能力将jQuery源码通读一遍那就更好了。</p>
<p>本文转自：<a href="http://rlog.cn/">Time Machine &#8211; 前端开发</a></p>
<p>原文地址：<a href="http://rlog.cn/?p=350&amp;cpage=1#comment-349">http://rlog.cn/?p=350&amp;cpage=1#comment-349</a></p>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/jquery-study-notes-8-optimization.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery学习笔记7——jQuery 1.3.3 新功能预览</title>
		<link>http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html</link>
		<comments>http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html#comments</comments>
		<pubDate>Thu, 12 Nov 2009 04:49:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[jQuery 1.3.3]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/jquery-1-3-3-preview.html</guid>
		<description><![CDATA[<p>&#160;&#160;&#160;&#160;&#160; <strong>1、增强的toggleClass()</strong></p>

<p><strong>&#160;&#160;&#160;&#160; </strong> 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了</p>

<pre class="csharpcode">.toggleClass(<span class="str">&#34;a b&#34;</span>) == .toggleClass(<span class="str">&#34;a&#34;</span>).toggleClass(<span class="str">&#34;b&#34;</span>)</pre>
<style type="text/css">
.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; }</style>

<p>&#160;&#160;&#160;&#160;&#160; 2）无参数时，自动删除、恢复全部class，也可以传递一个布尔值，true为恢复class，false为删除class</p>

<p>&#160;&#160;&#160;&#160;&#160; 3）也可以第一个参数为class名，第二个参数为布尔值，具体用法如下</p>

<pre class="csharpcode"><span class="rem">// 原始代码</span>
<span class="rem">// &#60;div class=&#34;a b c&#34;&#62;&#60;/div&#62;</span>

<span class="rem">// 删除、恢复全部class</span>
$(<span class="str">'div'</span>).toggleClass();        <span class="rem">// &#60;div class=&#34;&#34;/&#62;</span>
$(<span class="str">'div'</span>).toggleClass();        <span class="rem">// &#60;div class=&#34;a b c&#34;/&#62;</span>
$(<span class="str">'div'</span>).toggleClass( <span class="kwrd">false</span> ); <span class="rem">// &#60;div class=&#34;&#34;/&#62;</span>
$(<span class="str">'div'</span>).toggleClass( <span class="kwrd">true</span> );  <span class="rem">// &#60;div class=&#34;a b c&#34;/&#62;</span>

<span class="rem">// 删除、恢复多个 class</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&#34;a b&#34;</span>);          <span class="rem">// &#60;div class=&#34;c&#34;/&#62;</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&#34;a c&#34;</span>);          <span class="rem">// &#60;div class=&#34;a&#34;/&#62;</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&#34;a b c&#34;</span>, <span class="kwrd">false</span>); <span class="rem">// &#60;div class=&#34;&#34;/&#62;</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&#34;a b c&#34;</span>, <span class="kwrd">true</span>);  // &#60;div <span class="kwrd">class</span>=<span class="str">&#34;a b c&#34;</span>/&#62;</pre>
<style type="text/css">
.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; }</style>

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-form-plugin.html' rel='bookmark' title='Permanent Link: （jQuery插件推荐：表单类）jQuery Form Plugin'>（jQuery插件推荐：表单类）jQuery Form Plugin</a> <small>&lt;!-- jQuery的优秀使得基于jQuery的插件可谓百花齐放、争相斗艳（大家可以到官方网站插件页面了解详情）。 从今天起，Leeo会陆续为大家推荐一系列优秀的jQuery插件。 面对这琳琅满目的插件，也许你会觉得不知道该如何选择，希望Leeo的推荐能够给大家在选择插件是作为一个参考。 --&gt; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color:...</small></li>
<li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p>&#160;&#160;&#160;&#160;&#160; <strong>1、增强的toggleClass()</strong></p>
<p><strong>&#160;&#160;&#160;&#160; </strong> 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了</p>
<pre class="csharpcode">.toggleClass(<span class="str">&quot;a b&quot;</span>) == .toggleClass(<span class="str">&quot;a&quot;</span>).toggleClass(<span class="str">&quot;b&quot;</span>)</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; 2）无参数时，自动删除、恢复全部class，也可以传递一个布尔值，true为恢复class，false为删除class</p>
<p>&#160;&#160;&#160;&#160;&#160; 3）也可以第一个参数为class名，第二个参数为布尔值，具体用法如下</p>
<pre class="csharpcode"><span class="rem">// 原始代码</span>
<span class="rem">// &lt;div class=&quot;a b c&quot;&gt;&lt;/div&gt;</span>

<span class="rem">// 删除、恢复全部class</span>
$(<span class="str">'div'</span>).toggleClass();        <span class="rem">// &lt;div class=&quot;&quot;/&gt;</span>
$(<span class="str">'div'</span>).toggleClass();        <span class="rem">// &lt;div class=&quot;a b c&quot;/&gt;</span>
$(<span class="str">'div'</span>).toggleClass( <span class="kwrd">false</span> ); <span class="rem">// &lt;div class=&quot;&quot;/&gt;</span>
$(<span class="str">'div'</span>).toggleClass( <span class="kwrd">true</span> );  <span class="rem">// &lt;div class=&quot;a b c&quot;/&gt;</span>

<span class="rem">// 删除、恢复多个 class</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&quot;a b&quot;</span>);          <span class="rem">// &lt;div class=&quot;c&quot;/&gt;</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&quot;a c&quot;</span>);          <span class="rem">// &lt;div class=&quot;a&quot;/&gt;</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&quot;a b c&quot;</span>, <span class="kwrd">false</span>); <span class="rem">// &lt;div class=&quot;&quot;/&gt;</span>
$(<span class="str">'div'</span>).toggleClass(<span class="str">&quot;a b c&quot;</span>, <span class="kwrd">true</span>);  // &lt;div <span class="kwrd">class</span>=<span class="str">&quot;a b c&quot;</span>/&gt;</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; <strong>2、简化的hover()</strong></p>
<p>&#160;&#160;&#160;&#160;&#160; 1.3.3中，hover绑定事件可仅传递一个函数，将默认用做mouseenter/mouseleave公用的函数</p>
<pre class="csharpcode"><span class="rem">//旧代码：</span>
$(<span class="str">'li'</span>).hover(<span class="kwrd">function</span>() {
    $(<span class="kwrd">this</span>).addClass(<span class="str">'test'</span>);
}, <span class="kwrd">function</span>() {
    $(<span class="kwrd">this</span>).removeClass(<span class="str">'test'</span>);
});

<span class="rem">//新代码：</span>
$(<span class="str">'li'</span>).hover(<span class="kwrd">function</span>() {
    $(<span class="kwrd">this</span>).toggleClass(<span class="str">'test'</span>);
});</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; <strong>3、live冒泡事件支持预设参数</strong></p>
<pre class="csharpcode"><span class="rem">// 预设参数</span>
<span class="kwrd">var</span> eventConfig = {
     selectedClass: <span class="str">&quot;selected&quot;</span>
};

$(<span class="str">&quot;li&quot;</span>).live(<span class="str">&quot;click&quot;</span>, eventConfig, <span class="kwrd">function</span>( <span class="kwrd">event</span> ) {
    <span class="rem">// 绑定函数的参数event的data属性即为传递的预设参数</span>
    <span class="kwrd">var</span> selectedClass = <span class="kwrd">event</span>.data.selectedClass;
});</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; <strong>4、更好的支持其它windows、document对象</strong></p>
<pre class="csharpcode"><span class="rem">//通过.contents()获得其它框架的document对象</span>
<span class="kwrd">var</span> iframeDoc = $(<span class="str">'iframe'</span>).contents().get(0);

<span class="rem">//这样就可以获取其height/width/CSS属性或绑定事件</span>
<span class="rem">// 获得框架宽度</span>
$(iframeDoc).width();

<span class="rem">// 获得框架高度</span>
$(iframeDoc).height();

<span class="rem">// 绑定事件</span>
$(iframeDoc).bind(<span class="str">'click'</span>, <span class="kwrd">function</span>( <span class="kwrd">event</span> ) {
    <span class="rem">// do something</span>
});

<span class="rem">// 获得CSS属性值</span>
$(<span class="str">'div'</span>, iframeDoc).css(<span class="str">'backgroundColor'</span>);</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; 注意，如果要处理框架内部网页元素，请<a href="http://github.com/brandonaaron/jquery-doc-and-win/tree/master">使用此插件</a>（配合jQuery 1.3.3/+），和以下语法：</p>
<pre class="csharpcode">$(<span class="str">'iframe'</span>).win().bind(<span class="str">'load'</span>, fn);
$(<span class="str">'iframe'</span>).doc().find(<span class="str">'a'</span>).click(fn);</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; <strong>5、增强的index()</strong></p>
<p>&#160;&#160;&#160;&#160;&#160; 两个变化，第一个，支持传递selector作为参数</p>
<pre class="csharpcode"><span class="rem">//旧代码：</span>
$(<span class="str">&quot;img&quot;</span>).index($(<span class="str">&quot;img.selected&quot;</span>));

<span class="rem">//新代码</span>
$(<span class="str">&quot;img&quot;</span>).index(<span class="str">&quot;.selected&quot;</span>);</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; 第二个，无参数传递，直接查找在同级元素中的位置</p>
<pre class="csharpcode"><span class="rem">//旧代码：</span>
<span class="kwrd">var</span> $<span class="kwrd">this</span> = $(<span class="str">&quot;.selected&quot;</span>);
$<span class="kwrd">this</span>.parent().children().index($<span class="kwrd">this</span>);

<span class="rem">//新代码：</span>
$(<span class="str">&quot;.selected&quot;</span>).index();</pre>
<style type="text/css">
.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; }</style>
<p>&#160;&#160;&#160;&#160;&#160; <strong>6、自行指定this对象</strong></p>
<p>&#160;&#160;&#160;&#160;&#160; 在1.3.3中，可以在bind/live绑定事件时，自行指定this参数代表的对象。这个用法需求不多，而且可用event.target,event.currentTarget代替</p>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-form-plugin.html' rel='bookmark' title='Permanent Link: （jQuery插件推荐：表单类）jQuery Form Plugin'>（jQuery插件推荐：表单类）jQuery Form Plugin</a> <small>&lt;!-- jQuery的优秀使得基于jQuery的插件可谓百花齐放、争相斗艳（大家可以到官方网站插件页面了解详情）。 从今天起，Leeo会陆续为大家推荐一系列优秀的jQuery插件。 面对这琳琅满目的插件，也许你会觉得不知道该如何选择，希望Leeo的推荐能够给大家在选择插件是作为一个参考。 --&gt; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color:...</small></li>
<li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery学习笔记6&#8212;&#8212;jQuery 1.2.6 与 1.3 的主要区别</title>
		<link>http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html</link>
		<comments>http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html#comments</comments>
		<pubDate>Thu, 12 Nov 2009 04:40:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[jQuery 1.2.6]]></category>
		<category><![CDATA[jQuery 1.3]]></category>
		<category><![CDATA[区别]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html</guid>
		<description><![CDATA[<p>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：<strong>更为强大的选择器</strong>、<strong>重写了Offset()</strong>等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看<a href="http://docs.jquery.com/Release:jQuery_1.3">http://docs.jquery.com/Release:jQuery_1.3</a>。</p>

<p><a href="http://docs.jquery.com/#Performance"><img src="http://farm4.static.flickr.com/3399/3196296260_c7a0be70be.jpg" /></a></p>

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-8-optimization.html' rel='bookmark' title='Permanent Link: jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】'>jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】</a> <small>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&lt;jQuery Performance Rules&gt;这篇文章, 简单的摘译了一下: 总是从ID选择器开始继承 在class前使用tag 将jquery对象缓存起来 掌握强大的链式操作 使用子查询 对直接的DOM操作进行限制 冒泡 消除无效查询 推迟到 $(window).load...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：<strong>更为强大的选择器</strong>、<strong>重写了Offset()</strong>等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看<a href="http://docs.jquery.com/Release:jQuery_1.3">http://docs.jquery.com/Release:jQuery_1.3</a>。</p>
<p><a href="http://docs.jquery.com/#Performance"><img src="http://farm4.static.flickr.com/3399/3196296260_c7a0be70be.jpg" /></a></p>
<p><a href="http://docs.jquery.com/#Performance"><img src="http://farm4.static.flickr.com/3491/3195452055_a411849f82.jpg" /></a></p>
<p><a href="http://docs.jquery.com/#Performance"><img src="http://farm4.static.flickr.com/3422/3196296910_6d385bd9df.jpg" /></a></p>
<p><a href="http://docs.jquery.com/#Performance"><img src="http://farm4.static.flickr.com/3082/3195452579_e90f85f79c.jpg" /></a></p>
<p><a href="http://docs.jquery.com/#Performance"><img src="http://farm4.static.flickr.com/3319/3196297086_668626e4a5.jpg" /></a></p>
<p>本文要说的区别着重点不在性能的提升和浏览器的兼容，而是方法的差异和功能的新增。</p>
<p>在实际使用中，Leeo感觉1.3与1.2.6最大的不同有两个：</p>
<p>1：取消了@符号</p>
<pre class="csharpcode"><span class="rem">/*</span>
<span class="rem">例如：获取一个name为leeo的input的值</span>
<span class="rem">*/</span>
<span class="rem">/*</span>
<span class="rem">1.2.6的写法</span>
<span class="rem">*/</span>
$(<span class="str">'input[@name=&quot;leeo&quot;]'</span>).val();
<span class="rem">/*</span>
<span class="rem">1.3的写法</span>
<span class="rem">*/</span>
$(<span class="str">'input[name=&quot;leeo&quot;]'</span>).val();</pre>
<style type="text/css">
<p>.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; }</style>
<p>2：新能live()和die()方法</p>
</p>
</p>
<pre class="csharpcode"><span class="rem">/*</span>
<span class="rem">live(type, fn)</span>
<span class="rem">type：事件类型</span>
<span class="rem">目前支持</span>
<span class="rem">click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup。 </span>
<span class="rem">还不支持</span>
<span class="rem">blur, focus, mouseenter, mouseleave, change, submit</span>
<span class="rem">fn：欲绑定的事件处理函数</span>
<span class="rem">*/</span>
<span class="rem">/*</span>
<span class="rem">实例：在1.2.6版本中加入我们用append()方法向DOM追加一个按钮</span>
<span class="rem">*/</span>
$(<span class="str">'#newBtn'</span>).click(<span class="kwrd">function</span>(){
    alert(<span class="str">&quot;IT北瓜&quot;</span>);
});
$(<span class="str">'#appendButton'</span>).append(<span class="str">'&lt;input type=&quot;button&quot; id=&quot;newBtn&quot; name=&quot;newBtn&quot; /&gt;'</span>);
<span class="rem">//我们会发现当点击按钮的时候并没有弹出我们想要的信息，因为click事件并没有绑定到newBtn上</span>
<span class="rem">//而1.3新增的live(type, fn)方法却可以轻松的做到这一点</span>
$(<span class="str">'#newBtn'</span>).live(<span class="str">'click'</span>, <span class="kwrd">function</span>(){
        alert(<span class="str">&quot;IT北瓜&quot;</span>);
});
$(<span class="str">'#appendButton'</span>).append(<span class="str">'&lt;input type=&quot;button&quot; id=&quot;newBtn&quot; name=&quot;newBtn&quot; /&gt;'</span>);

<span class="rem">/*</span>
<span class="rem">die([type], [fn])方法是与live(type, fn)相反的方法</span>
<span class="rem">type (可选)：要解除绑定的live事件</span>
<span class="rem">fn (可选)：要解除绑定的特定处理函数</span>
<span class="rem">*/</span>
<span class="rem">/*</span>
<span class="rem">实例：给按钮解除click事件</span>
<span class="rem">*/</span>
<span class="kwrd">function</span> dieClick() {
     alert(<span class="str">&quot;IT北瓜&quot;</span>);
}
$(<span class="str">'#newBtn'</span>).live(<span class="str">'click'</span>, <span class="kwrd">function</span>(){
    dieClick();
    $(<span class="str">'#newBtn'</span>).die(<span class="str">&quot;click&quot;</span>, dieClick);
});</pre>
<style type="text/css">
<p>.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; }</style>
<p>当然，除了以上说到的两点，1.3中还有其他新增的方法，如：jQuery.support等等…</p>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-8-optimization.html' rel='bookmark' title='Permanent Link: jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】'>jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】</a> <small>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&lt;jQuery Performance Rules&gt;这篇文章, 简单的摘译了一下: 总是从ID选择器开始继承 在class前使用tag 将jquery对象缓存起来 掌握强大的链式操作 使用子查询 对直接的DOM操作进行限制 冒泡 消除无效查询 推迟到 $(window).load...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery学习笔记5&#8212;&#8212;eq(num)和get(index)的区别</title>
		<link>http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html</link>
		<comments>http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html#comments</comments>
		<pubDate>Mon, 26 Oct 2009 09:05:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[eq(num)]]></category>
		<category><![CDATA[get(index)]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html</guid>
		<description><![CDATA[<h5>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。</h5>

<pre>eq(num)返回的是jQuery <span style="color: #0000ff">object</span>，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML</pre>

<pre>get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML</pre>

<pre class="csharpcode">&#160;</pre>
<style type="text/css">


.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; }</style>

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-4-jquery-object-dom-object-conversion.html' rel='bookmark' title='Permanent Link: jQuery学习笔记4——jQuery对象与DOM对象转换'>jQuery学习笔记4——jQuery对象与DOM对象转换</a> <small>1、jQuery对象转为DOM对象 jQuery对象转为DOM对象有两种方法： （1）jQuery对象是一个数组对象，可以通过索引[index]方式得到相应DOM对象，如：...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-8-optimization.html' rel='bookmark' title='Permanent Link: jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】'>jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】</a> <small>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&lt;jQuery Performance Rules&gt;这篇文章, 简单的摘译了一下: 总是从ID选择器开始继承 在class前使用tag 将jquery对象缓存起来 掌握强大的链式操作 使用子查询 对直接的DOM操作进行限制 冒泡 消除无效查询 推迟到 $(window).load...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p>jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。</p>
<pre>eq(num)返回的是jQuery <span style="color: #0000ff">object</span>，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML</pre>
<pre>get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML</pre>
<pre class="csharpcode"></pre>
<p><!--.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; } --></p>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-4-jquery-object-dom-object-conversion.html' rel='bookmark' title='Permanent Link: jQuery学习笔记4——jQuery对象与DOM对象转换'>jQuery学习笔记4——jQuery对象与DOM对象转换</a> <small>1、jQuery对象转为DOM对象 jQuery对象转为DOM对象有两种方法： （1）jQuery对象是一个数组对象，可以通过索引[index]方式得到相应DOM对象，如：...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-8-optimization.html' rel='bookmark' title='Permanent Link: jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】'>jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】</a> <small>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&lt;jQuery Performance Rules&gt;这篇文章, 简单的摘译了一下: 总是从ID选择器开始继承 在class前使用tag 将jquery对象缓存起来 掌握强大的链式操作 使用子查询 对直接的DOM操作进行限制 冒泡 消除无效查询 推迟到 $(window).load...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery学习笔记4——jQuery对象与DOM对象转换</title>
		<link>http://imleeo.com/jquery/jquery-study-notes-4-jquery-object-dom-object-conversion.html</link>
		<comments>http://imleeo.com/jquery/jquery-study-notes-4-jquery-object-dom-object-conversion.html#comments</comments>
		<pubDate>Mon, 07 Sep 2009 08:17:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[jQuery对象DOM对象]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[转换]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/jquery-study-notes-4-jquery-object-dom-object-conversion.html</guid>
		<description><![CDATA[1、jQuery对象转为DOM对象 
jQuery对象转为DOM对象有两种方法： 
（1）jQuery对象是一个数组对象，可以通过索引[index]方式得到相应DOM对象，如：

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html' rel='bookmark' title='Permanent Link: jQuery学习笔记3——养成良好代码书写规范'>jQuery学习笔记3——养成良好代码书写规范</a> <small>代码是否拥有良好的层次结构和书写规范也是一个好的程序员的考量标准之一，层次分明、书写规范的程序代码不但易于阅读同时也易于维护。以下是我认为书写jQuery代码是需要注意的几个原则（PS：当然我也不是每一点都做到了，⊙﹏⊙b汗！）： 原则1：格式缩进 只有让代码合理缩进，才可能看起来层次分明，一般为缩进4个字符宽度，如下：...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html' rel='bookmark' title='Permanent Link: jQuery学习笔记2——解决与其他js框架冲突'>jQuery学习笔记2——解决与其他js框架冲突</a> <small>jQuery学习笔记1——引入jQuery框架已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。 情况一：在其他框架之后引入jQuery...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p>1、jQuery对象转为DOM对象    <br />jQuery对象转为DOM对象有两种方法：     <br />（1）jQuery对象是一个数组对象，可以通过索引[index]方式得到相应DOM对象，如：</p>
<div class="wlWriterSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:1d59eb81-3a57-4ebe-a1d6-47c62c2a60bb" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">var $cb = $(&quot;#checkboxid&quot;);    //获取jQuery对象，这里用$来区分是jQuery变量
var cb = $cb[0];    //获取DOM对象
alert(cb.checked);    //弹出DOM对象是否被选中的布尔值</pre>
</div>
<p>（2）利用jQuery提供的get(index)方法得到相应DOM对象，如：</p>
<div class="wlWriterSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:00972c72-7376-4281-9cfc-daee5563d14b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">var $cb = $(&quot;#checkboxid&quot;);    //获取jQuery对象，这里用$来区分是jQuery变量
var cb = $cb.get(0);    //获取DOM对象
alert(cb.checked);    //弹出DOM对象是否被选中的布尔值</pre>
</div>
<p>2、DOM对象转为jQuery对象<br />
  <br />转换的方式很简单，只需用$()将DOM对象包含起来便可以获取相应的jQuery对象，如：</p>
<div class="wlWriterSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:7df39161-e906-4e49-bca4-07d8db0f05ad" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">var cb = document.getElementById(&quot;#checkboxid&quot;);    //获取jQuery对象，这里用$来区分是jQuery变量
var $cb = $(cb);    //获取DOM对象
alert($cb.length);    //验证一下jQuery的个数</pre>
</div>
<p>就说到这吧，下次见。。。</p>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/the-difference-of-eqnum-and-getindex.html' rel='bookmark' title='Permanent Link: jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别'>jQuery学习笔记5&mdash;&mdash;eq(num)和get(index)的区别</a> <small>&#160;&#160;&#160;&#160;&#160; jQuery中eq(num)和get(index)两种方法的却别在于返回对象不同，前者返回jQuery对象而后者返回DOM对象。 eq(num)返回的是jQuery object，用法：$(element).eq(0).html()，返回第一个元素中包含的HTML get(index)返回的是javascript的DOM，用法：$(element).get(0).innerHTML，返回索引为0元素中包含的HTML &#160; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace;...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html' rel='bookmark' title='Permanent Link: jQuery学习笔记3——养成良好代码书写规范'>jQuery学习笔记3——养成良好代码书写规范</a> <small>代码是否拥有良好的层次结构和书写规范也是一个好的程序员的考量标准之一，层次分明、书写规范的程序代码不但易于阅读同时也易于维护。以下是我认为书写jQuery代码是需要注意的几个原则（PS：当然我也不是每一点都做到了，⊙﹏⊙b汗！）： 原则1：格式缩进 只有让代码合理缩进，才可能看起来层次分明，一般为缩进4个字符宽度，如下：...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html' rel='bookmark' title='Permanent Link: jQuery学习笔记2——解决与其他js框架冲突'>jQuery学习笔记2——解决与其他js框架冲突</a> <small>jQuery学习笔记1——引入jQuery框架已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。 情况一：在其他框架之后引入jQuery...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/jquery-study-notes-4-jquery-object-dom-object-conversion.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery学习笔记3——养成良好代码书写规范</title>
		<link>http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html</link>
		<comments>http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html#comments</comments>
		<pubDate>Mon, 07 Sep 2009 07:24:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[代码书写规范]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html</guid>
		<description><![CDATA[代码是否拥有良好的层次结构和书写规范也是一个好的程序员的考量标准之一，层次分明、书写规范的程序代码不但易于阅读同时也易于维护。以下是我认为书写jQuery代码是需要注意的几个原则（PS：当然我也不是每一点都做到了，⊙﹏⊙b汗！）：
原则1：格式缩进
只有让代码合理缩进，才可能看起来层次分明，一般为缩进4个字符宽度，如下：

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html' rel='bookmark' title='Permanent Link: jQuery学习笔记2——解决与其他js框架冲突'>jQuery学习笔记2——解决与其他js框架冲突</a> <small>jQuery学习笔记1——引入jQuery框架已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。 情况一：在其他框架之后引入jQuery...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p>代码是否拥有良好的层次结构和书写规范也是一个好的程序员的考量标准之一，层次分明、书写规范的程序代码不但易于阅读同时也易于维护。以下是我认为书写jQuery代码是需要注意的几个原则（PS：当然我也不是每一点都做到了，⊙﹏⊙b汗！）：    <br />原则1：格式缩进     <br />只有让代码合理缩进，才可能看起来层次分明，一般为缩进4个字符宽度，如下：</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:f46d0dc2-ebb5-4f45-8b59-39175bf917d6" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">$(document).ready(function(){
    alert("本行缩进4个字符");//本行缩进4个字符
});</pre>
</div>
<p>原则2：添加注释<br />
  <br />对于一目了然的代码我们当然可以不写注释，但是对于复杂的代码，添加相应的注释说明就显得举足轻重了，假如以下这段代码：</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:7ae22823-682a-4293-ae82-514ff81e52a9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">$("#table&gt;tbody&gt;tr:has(td:last:has(:checkbox:enabled))").css("background", "red");</pre>
</div>
<p>不作任何注释的话，也许一看你就晕倒了，即使不晕倒我想你也得费点功夫才能看出个所以然吧，所以像这样的代码是绝对有必要写上注释的：</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:1a23fb0a-6163-4e7e-8f77-bc4a53c7e326" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">/*
 *检索一个ID为table的表格的tbody中每一行，
 *如果该行的最后一个单元格中的checkbox状态为可用，
 *则将此行的背景颜色设置为红色
*/
$("#table&gt;tbody&gt;tr:has(td:last:has(:checkbox:enabled))").css("background", "red");</pre>
</div>
<p>原则3：链式操作<br />
  <br />我们都知道jQuery提供了极其强大的链式操作，所以我们要尽可能使用链式操作来避免重复获取对象，如：</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b44a2742-e4cd-484f-a088-32ca88fa3af3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">//给一个ID为btn的按钮赋值，并绑定click事件
$("#btn").val("我是一个按钮，请点击我！");//第1次获取$("#btn")对象
$("#btn").click(function(){//第2次获取$("#btn")对象
    alert("您点击了按钮！");
});</pre>
</div>
<p>以上代码虽然没有错误，但却两次获取同一对象$(&quot;#btn&quot;)，很明显这是没有必要的，采用链式操作则可以避免这个问题：</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:f6a5d6f6-a309-4683-85a3-572b514cfef0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">//给一个ID为btn的按钮赋值，并绑定click事件
$("#btn").val("我是一个按钮，请点击我！").click(function(){
    alert("您点击了按钮！");
});//只获取一次$("#btn")对象</pre>
</div>
<p>原则4：合理换行<br />
  <br />jQuery的链式操作很强大，但如果我们一味地将链式操作拼接下去，我想你自己也会被链晕的，遇到对同一对象进行复杂的链式操作，我们就应该考虑合理的是代码换行，这一点也符合原则1中说到的良好层次结构，比如以下这段不算复杂的代码：</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b3138eb3-cd70-4bb0-82b9-20b003cb95e8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">$(this).addClass("highlight").children("a").show().end().siblings().removeClass("highlight").children("a").hide();</pre>
</div>
<p>如果完全不换行，看起来就感觉很晦涩难懂了，换行的另一个好处就是能够在最合适的地方添加注释，如下：</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3de771b6-50ea-491f-9225-05649f8cf1d1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: javascript">$(".has_children").click(function(){
    $(this).addClass("highlight")    //为当前元素增加highlight类
        .children("a").show().end()    //将子节点的a元素显示出来并重新定位到上次操作的元素
    .siblings().removeClass("highlight")    //获取元素的兄弟元素，并去掉他们的highlight类
        .children("a").hide();    //将兄弟元素下的a元素隐藏
});</pre>
</div>
<p>既然要换行，那么应该在什么地方换行也就成了我们必须解决的问题了。<br />
  <br />合理换行考虑因素： </p>
<p>1：同一对象不超过3个链式操作，写成一行 </p>
<p>2：同一对象较多链式操作（3个以上），同一功能块写在一行，不同功能块换行书写 </p>
<p>3：操作不同层次对象换行并缩进书写，如原则4中的第二段代码</p>
<p>OK，就写到这，88…</p>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html' rel='bookmark' title='Permanent Link: jQuery学习笔记2——解决与其他js框架冲突'>jQuery学习笔记2——解决与其他js框架冲突</a> <small>jQuery学习笔记1——引入jQuery框架已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。 情况一：在其他框架之后引入jQuery...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-7-jquery-1-3-3-preview.html' rel='bookmark' title='Permanent Link: jQuery学习笔记7——jQuery 1.3.3 新功能预览'>jQuery学习笔记7——jQuery 1.3.3 新功能预览</a> <small>&#160;&#160;&#160;&#160;&#160; 1、增强的toggleClass() &#160;&#160;&#160;&#160; 1）toggleClass也可以和addClass一样，用空格分隔多个class名称了 .toggleClass(&quot;a b&quot;) == .toggleClass(&quot;a&quot;).toggleClass(&quot;b&quot;) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New",...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery学习笔记2——解决与其他js框架冲突</title>
		<link>http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html</link>
		<comments>http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html#comments</comments>
		<pubDate>Mon, 07 Sep 2009 05:42:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[js框架]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[解决冲突]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/jquery%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b02%e8%a7%a3%e5%86%b3%e4%b8%8e%e5%85%b6%e4%bb%96js%e6%a1%86%e6%9e%b6%e5%86%b2%e7%aa%81.html</guid>
		<description><![CDATA[jQuery学习笔记1——引入jQuery框架已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。

情况一：在其他框架之后引入jQuery

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-1-use-jquery.html' rel='bookmark' title='Permanent Link: jQuery学习笔记1——引入jQuery框架'>jQuery学习笔记1——引入jQuery框架</a> <small>引入jQuery框架和引入一个普通的js文件一个，很简单，就是在之间插入：...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html' rel='bookmark' title='Permanent Link: jQuery学习笔记3——养成良好代码书写规范'>jQuery学习笔记3——养成良好代码书写规范</a> <small>代码是否拥有良好的层次结构和书写规范也是一个好的程序员的考量标准之一，层次分明、书写规范的程序代码不但易于阅读同时也易于维护。以下是我认为书写jQuery代码是需要注意的几个原则（PS：当然我也不是每一点都做到了，⊙﹏⊙b汗！）： 原则1：格式缩进 只有让代码合理缩进，才可能看起来层次分明，一般为缩进4个字符宽度，如下：...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://imleeo.com/jquery/jquery-study-notes-1-use-jquery.html">jQuery学习笔记1——引入jQuery框架</a>已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。</p>
<p>情况一：在其他框架之后引入jQuery</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:0f39b092-86e0-477b-9568-3d6d39108845" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;!-- 引入 prototype  --&gt;
&lt;script src="lib/prototype.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;!-- 引入 jQuery  --&gt;
&lt;script src="lib/jquery-1.3.2.min.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
</div>
<p>这种情况下，我们可以利用jQuery.noConflict()方法来移交变量$的控制权，并用jQuery变量来访问jQuery对象，如下：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:bd24e299-5617-4e20-9a0f-e3e2d3c5803f" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;script type="text/javascript"&gt;
    jQuery.noConflict();//移交变量$控制权给prototype
    jQuery(function(){//使用jQuery变量访问jQuery对象
	jQuery("#test-jq").click(function(){
		alert(jQuery(this).text());
	});
    });
    $("test-p").style.display = "none";	//使用变量$访问prototype
&lt;/script&gt;</pre>
</div>
<p>如果觉得用jQuery变量访问jQuery对象书写比较麻烦，那你完全可以自定义一个快捷变量，如：$j、jQ等等：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:2cec05ca-bece-401f-865a-72e34509625b" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;script type="text/javascript"&gt;
    var $j = jQuery.noConflict();//移交变量$控制权给prototype，并赋予$j
    $j(function(){//使用jQuery变量访问jQuery对象
	$j("#test-jq").click(function(){
		alert($j(this).text());
	});
    });
    $("test-p").style.display = "none";	//使用变量$访问prototype
&lt;/script&gt;</pre>
</div>
<p>假如你已经习惯了用$访问jQuery对象，不希望改变这种访问方式，同时又希望Prototype也可以使用$，那么在移交控制权之后，你可以用jQuery(function($){});把你要访问的方法包起来，然后在其内容使用$访问jQuery对象，有如下两种方式：</p>
<p>方式1:</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:e4a53890-cc4a-41db-980d-ebb6f8bae050" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;script type="text/javascript"&gt;
    jQuery.noConflict();//移交变量$控制权给prototype
    jQuery(function($){
	$("#test-jq").click(function(){//在内部使用$
		alert$(this).text());
	});
    });
    $("test-p").style.display = "none";	//使用变量$访问prototype
&lt;/script&gt;</pre>
</div>
<p>方式2:</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:8d44b08e-8a0c-4ccd-9805-eddcd2615a96" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;script type="text/javascript"&gt;
    jQuery.noConflict();//移交变量$控制权给prototype
    (function($){
        $(function(){//定义匿名函数
	    $("#test-jq").click(function(){//匿名函数中的$均为jQuery
		alert$(this).text());
	    });
        });
    })(jQuery);//执行匿名函数并传递实参jQuery
    $("test-p").style.display = "none";	//使用变量$访问prototype
&lt;/script&gt;</pre>
</div>
<p>方式2也是插件开发中常用的方式。</p>
<p>情况二：在其他框架之前引入jQuery</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:8f2312ad-47bd-446a-91d1-0c69c7351667" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>//之前代码省略...
&lt;!--先导入jQuery --&gt;
&lt;script src="lib/jquery-1.3.2.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;!--后导入其他库 --&gt;
&lt;script src="lib/prototype.js" type="text/javascript"&gt;&lt;/script&gt;

//中间代码省略...

&lt;script type="text/javascript"&gt;
    jQuery(function(){//直接使用jQuery ,无需调用jQuery.noConflict()函数
	jQuery("#test-jq").click(function(){
		alert(jQuery(this).text());
	});
    });
    $("test-p").style.display = "none";	//使用变量$访问prototype
&lt;/script&gt;</pre>
</div>
<p>OK,现在你可以放心结合其他js框架使用jQuery了,笔记2到此结束,( ^_^ )/~~拜拜</p>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-1-use-jquery.html' rel='bookmark' title='Permanent Link: jQuery学习笔记1——引入jQuery框架'>jQuery学习笔记1——引入jQuery框架</a> <small>引入jQuery框架和引入一个普通的js文件一个，很简单，就是在之间插入：...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-6-difference-between-jquery1-2-6-and-jquery1-3.html' rel='bookmark' title='Permanent Link: jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别'>jQuery学习笔记6&mdash;&mdash;jQuery 1.2.6 与 1.3 的主要区别</a> <small>&#160;&#160;&#160;&#160;&#160; 2009年01月14日jQuery 1.3正式发布，1.3相比1.2.6在性能和浏览器兼容方面都做了不少改进，如：更为强大的选择器、重写了Offset()等等。这里仅引用jQuery官方的几个测试图片，详细信息请查看http://docs.jquery.com/Release:jQuery_1.3。 ...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-3-to-develop-good-code-written-specification.html' rel='bookmark' title='Permanent Link: jQuery学习笔记3——养成良好代码书写规范'>jQuery学习笔记3——养成良好代码书写规范</a> <small>代码是否拥有良好的层次结构和书写规范也是一个好的程序员的考量标准之一，层次分明、书写规范的程序代码不但易于阅读同时也易于维护。以下是我认为书写jQuery代码是需要注意的几个原则（PS：当然我也不是每一点都做到了，⊙﹏⊙b汗！）： 原则1：格式缩进 只有让代码合理缩进，才可能看起来层次分明，一般为缩进4个字符宽度，如下：...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery学习笔记1——引入jQuery框架</title>
		<link>http://imleeo.com/jquery/jquery-study-notes-1-use-jquery.html</link>
		<comments>http://imleeo.com/jquery/jquery-study-notes-1-use-jquery.html#comments</comments>
		<pubDate>Wed, 02 Sep 2009 15:19:00 +0000</pubDate>
		<dc:creator>IT北瓜</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery学习笔记]]></category>
		<category><![CDATA[专题]]></category>
		<category><![CDATA[专题系列]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://imleeo.com/jquery/jquery%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b01%e5%bc%95%e5%85%a5jquery%e6%a1%86%e6%9e%b6/</guid>
		<description><![CDATA[引入jQuery框架和引入一个普通的js文件一个，很简单，就是在<head></head>之间插入：

<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content">
关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html' rel='bookmark' title='Permanent Link: jQuery学习笔记2——解决与其他js框架冲突'>jQuery学习笔记2——解决与其他js框架冲突</a> <small>jQuery学习笔记1——引入jQuery框架已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。 情况一：在其他框架之后引入jQuery...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-message-switching.html' rel='bookmark' title='Permanent Link: 利用jQuery轻松实现简介信息切换'>利用jQuery轻松实现简介信息切换</a> <small>&#160;&#160;&#160;&#160;&#160; 刚刚群里的一位群友问我如何显示http://www.sunkang.net/lecturecon.asp（PS：他正在做的网站）上下图区域中...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-8-optimization.html' rel='bookmark' title='Permanent Link: jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】'>jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】</a> <small>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&lt;jQuery Performance Rules&gt;这篇文章, 简单的摘译了一下: 总是从ID选择器开始继承 在class前使用tag 将jquery对象缓存起来 掌握强大的链式操作 使用子查询 对直接的DOM操作进行限制 冒泡 消除无效查询 推迟到 $(window).load...</small></li>
</ol></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></description>
			<content:encoded><![CDATA[<p>引入jQuery框架和引入一个普通的js文件一个，很简单，就是在&lt;head&gt;&lt;/head&gt;之间插入：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:e3acd076-c9f2-4a8a-aec7-43eed45cddb0" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;script src="lib/jquery-1.3.2.min.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
</div>
<p>其中，src路径根据实际做修改。很多人（包括我以前也是这样）最初在写一个html页面的时候都简单写成如下形式：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:1e1b5194-6962-474b-a6f4-667db146891c" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;jQuery学习笔记1——引入jQuery框架&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>既没有声明文档类型，也没有设置页面编码，没有声明文档类型会出现奇奇怪怪的问题，而未正确设置页面编码则是导致中文乱码的常见因素。因此强烈建议声明文档类型DOCTYPE和设置正确编码charset，中文用户可以设置编码格式为gb2312或者GBK，但建议设置为国际化编码格式utf-8，完全代码如下：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:a372e0b2-6804-4466-aaf4-4da6f1115d58" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;jQuery学习笔记1——引入jQuery框架&lt;/title&gt;
&lt;script src="lib/jquery-1.3.2.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>另外，建议在开发过程引入的jQuery为未压缩版jquery-1.3.2.js以方便调试，开发完成才使用min版，同时，如果项目是发布到网上的还建议利用Google Ajax Library API来加速常用js类库的载入，有两种方式：</p>
<p>第一种方式是直接载入js文件：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:76765950-e31e-45d5-bc6c-8dccf393a8c5" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
</div>
<p>第二种是利用google提供的接口：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:f072b15b-70f0-4a25-9b4c-eb47c17efbf1" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
    //载入jQuery
    google.load("jquery", "1.3.2");
    google.setOnLoadCallback(function(){
        //加载完毕的回调函数
    });
    //除了load方法还有其他一些方法，详情请看官网
&lt;/script&gt;</pre>
</div>
<p>最后，试一下jQuery是否生效，代码如下：</p>
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:423e2dac-6365-4296-ab99-0150dcd86f86" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;jQuery学习笔记1——引入jQuery框架&lt;/title&gt;
&lt;script src="lib/jquery-1.3.2.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
    $(document).ready(function(){
	    alert("jQuery学习笔记1——引入jQuery框");
	});
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>OK，笔记1就到此，请继续关注接下来的笔记，同时欢迎踊跃发言，( ^_^ )/~~拜拜。。。</p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:11634cf2-f4ab-4a7c-abf9-245359678a54" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati 标签: <a rel="tag" href="http://technorati.com/tags/jQuery">jQuery</a>,<a rel="tag" href="http://technorati.com/tags/%e4%b8%93%e9%a2%98%e7%b3%bb%e5%88%97">专题系列</a>,<a rel="tag" href="http://technorati.com/tags/%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0">学习笔记</a></div>


<div class="posturl"><span><span class="r1"></span><span class="r2"></span><span class="r3"></span><span class="r4"></span></span><div class="posturl-content"><p>关联文章导读：<ol><li><a href='http://imleeo.com/jquery/jquery-study-notes-2-to-resolve-conflicts-with-other-js-frameworks.html' rel='bookmark' title='Permanent Link: jQuery学习笔记2——解决与其他js框架冲突'>jQuery学习笔记2——解决与其他js框架冲突</a> <small>jQuery学习笔记1——引入jQuery框架已经介绍了如果引入jQuery这一优秀js框架，但有时候处于项目的需要，要引入的js框架不止jQuery一个，这就可能造成框架间发生冲突。下面假如还需要引入Prototype框架来说明一下如何解决jQuery与其他框架间的冲突。 情况一：在其他框架之后引入jQuery...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-message-switching.html' rel='bookmark' title='Permanent Link: 利用jQuery轻松实现简介信息切换'>利用jQuery轻松实现简介信息切换</a> <small>&#160;&#160;&#160;&#160;&#160; 刚刚群里的一位群友问我如何显示http://www.sunkang.net/lecturecon.asp（PS：他正在做的网站）上下图区域中...</small></li>
<li><a href='http://imleeo.com/jquery/jquery-study-notes-8-optimization.html' rel='bookmark' title='Permanent Link: jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】'>jQuery学习笔记8&mdash;&mdash;jQuery性能优化指南【转】</a> <small>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,&#160; 比如我.&#160; jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了&lt;jQuery Performance Rules&gt;这篇文章, 简单的摘译了一下: 总是从ID选择器开始继承 在class前使用tag 将jquery对象缓存起来 掌握强大的链式操作 使用子查询 对直接的DOM操作进行限制 冒泡 消除无效查询 推迟到 $(window).load...</small></li>
</ol></p></div><span><span class="r4"></span><span class="r3"></span><span class="r2"></span><span class="r1"></span></span></div>]]></content:encoded>
			<wfw:commentRss>http://imleeo.com/jquery/jquery-study-notes-1-use-jquery.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
