<?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>Just think it &#187; AJAX</title>
	<atom:link href="http://www.wenan8.com/blog/archives/category/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wenan8.com/blog</link>
	<description>每天跑跑步有益身体健康哦！ ^_^</description>
	<lastBuildDate>Fri, 05 Aug 2011 03:01:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>jQuery性能优化</title>
		<link>http://www.wenan8.com/blog/archives/387</link>
		<comments>http://www.wenan8.com/blog/archives/387#comments</comments>
		<pubDate>Sun, 31 Oct 2010 11:12:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=387</guid>
		<description><![CDATA[现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 1，总是从ID选择器开始继承 在jQuery中最快的选择器是ID选择器，因为它直接来自于JavaScript的getElementById()方法。 例如有一段HTML代码： &#60;div id=&#34;content&#34;&#62; &#60;form method=&#34;post&#34; action=&#34;#&#34;&#62; &#60;h2&#62;交通信号灯&#60;/h2&#62; &#60;ul id=&#34;traffic_light&#34;&#62; &#60;li&#62;&#60;input type=&#34;radio&#34; class=&#34;on&#34; name=&#34;light&#34; value=&#34;red&#34; /&#62; 红色&#60;/li&#62; &#60;li&#62;&#60;input type=&#34;radio&#34; class=&#34;off&#34; name=&#34;light&#34; value=&#34;yellow&#34; /&#62; 黄色&#60;/li&#62; &#60;li&#62;&#60;input type=&#34;radio&#34; class=&#34;off&#34; name=&#34;light&#34; value=&#34;green&#34; /&#62; 绿色&#60;/li&#62; &#60;/ul&#62; &#60;input class=&#34;button&#34; id=&#34;traffic_button&#34; type=&#34;submit&#34; value=&#34;Go&#34; /&#62; &#60;/form&#62; &#60;/div&#62; 如果采用下面的选择器，那么效率是低效的。 var traffic_button = $&#40;&#34;#content .button&#34;&#41;; 因为button已经有ID了，我们可以直接使用ID选择器。如下所示： var [...]]]></description>
			<content:encoded><![CDATA[<p>现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的.<br />
1，总是从ID选择器开始继承</p>
<p>在jQuery中最快的选择器是ID选择器，因为它直接来自于JavaScript的getElementById()方法。</p>
<p>例如有一段HTML代码：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;content&quot;&gt;
&lt;form method=&quot;post&quot; action=&quot;#&quot;&gt;
&lt;h2&gt;交通信号灯&lt;/h2&gt;
&lt;ul id=&quot;traffic_light&quot;&gt;
&lt;li&gt;&lt;input type=&quot;radio&quot; class=&quot;on&quot; name=&quot;light&quot; value=&quot;red&quot; /&gt; 红色&lt;/li&gt;
&lt;li&gt;&lt;input type=&quot;radio&quot; class=&quot;off&quot; name=&quot;light&quot; value=&quot;yellow&quot; /&gt; 黄色&lt;/li&gt;
&lt;li&gt;&lt;input type=&quot;radio&quot; class=&quot;off&quot; name=&quot;light&quot; value=&quot;green&quot; /&gt; 绿色&lt;/li&gt;
&lt;/ul&gt;
&lt;input class=&quot;button&quot; id=&quot;traffic_button&quot; type=&quot;submit&quot; value=&quot;Go&quot; /&gt;
&lt;/form&gt;
&lt;/div&gt;</pre></div></div>

<p><span id="more-387"></span><br />
如果采用下面的选择器，那么效率是低效的。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> traffic_button <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#content .button&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>因为button已经有ID了，我们可以直接使用ID选择器。如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> traffic_button <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_button&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>当然 这只是对于单一的元素来讲。如果你需要选择多个元素，这必然会涉及到 DOM遍历和循环，<br />
为了提高性能，建议从最近的ID开始继承。<br />
如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> traffic_lights <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>2，在class前使用tag(标签名)<br />
在jQuery中第二快的选择器是tag(标签)选择器( 比如：$(“head”) )。<br />
跟ID选择器累时，因为它来自原生的getElementsByTagName() 方法。</p>
<p>继续看刚才那段HTML代码：</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;content&quot;&gt;
&lt;form method=&quot;post&quot; action=&quot;#&quot;&gt;
&lt;h2&gt;交通信号灯&lt;/h2&gt;
&lt;ul id=&quot;traffic_light&quot;&gt;
&lt;li&gt;&lt;input type=&quot;radio&quot; class=&quot;on&quot; name=&quot;light&quot; value=&quot;red&quot; /&gt; 红色&lt;/li&gt;
&lt;li&gt;&lt;input type=&quot;radio&quot; class=&quot;off&quot; name=&quot;light&quot; value=&quot;yellow&quot; /&gt; 黄色&lt;/li&gt;
&lt;li&gt;&lt;input type=&quot;radio&quot; class=&quot;off&quot; name=&quot;light&quot; value=&quot;green&quot; /&gt; 绿色&lt;/li&gt;
&lt;/ul&gt;
&lt;input class=&quot;button&quot; id=&quot;traffic_button&quot; type=&quot;submit&quot; value=&quot;Go&quot; /&gt;
&lt;/form&gt;
&lt;/div&gt;</pre></div></div>

<p>比如需要选择 红绿 单选框，<br />
那么可以使用一个tag name来限制(修饰)class ，如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> active_light <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;input.on&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>当然也可以结合 就近的ID，如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> active_light <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input.on&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>在使用tag来修饰class的时候，我们需要注意以下几点：<br />
（1） 不要使用tag来修饰ID，如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> content <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;div#content&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>这样一来，选择器会先遍历所有的div元素，然后匹配#content。<br />
（好像jQuery从1.3.1开始改变了选择器核心后，不存在这个问题了。暂时无法考证。）<br />
（2）不要画蛇添足的使用ID来修饰ID，如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> traffic_light <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#content #traffic_light&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>3，将jQuery对象缓存起来<br />
把jQuery对象缓存起来 就是要告诉我们 要养成将jQuery对象缓存进变量的习惯。<br />
下面是一个jQuery新手写的一段代码：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input.on&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> ... <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input.on&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;border&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;1px dashed yellow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input.on&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;background-color&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;orange&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input.on&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>但切记不要这么做。</p>
<p>我们应该先将对象缓存进一个变量然后再操作，如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> $active_light <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input.on&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$active_light.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> ... <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$active_light.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;border&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;1px dashed yellow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$active_light.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;background-color&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;orange&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$active_light.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>记住，永远不要让相同的选择器在你的代码里出现多次.</p>
<p>注：（1）为了区分普通的JavaScript对象和jQuery对象，可以在变量首字母前加上 $ 符号。<br />
（2）上面代码可以使用jQuery的链式操作加以改善。如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> $active_light <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light input.on&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>$active_light.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> ... <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;border&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;1px dashed yellow&quot;</span><span style="color: #009900;">&#41;</span> .<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;background-color&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;orange&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>如果你打算在其他函数中使用jQuery对象，那么你必须把它们缓存到全局环境中。<br />
如下代码所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// 在全局范围定义一个对象 (例如: window对象)</span>
window.$my <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
head <span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;head&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
traffic_light <span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_light&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
traffic_button <span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#traffic_button&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">function</span> do_something<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">// 现在你可以引用存储的结果并操作它们</span>
<span style="color: #003366; font-weight: bold;">var</span> script <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;script&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$my.<span style="color: #660066;">head</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span>script<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// 当你在函数内部操作是, 可以继续将查询存入全局对象中去.</span>
$my.<span style="color: #660066;">cool_results</span> <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#some_ul li&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$my.<span style="color: #660066;">other_results</span> <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#some_table td&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// 将全局函数作为一个普通的jquery对象去使用.</span>
$my.<span style="color: #660066;">other_results</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;border-color&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;red&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$my.<span style="color: #660066;">traffic_light</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;border-color&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;green&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #006600; font-style: italic;">//你也可以在其他函数中 使用它</span></pre></div></div>

<p>4，对直接的DOM操作进行限制这里的基本思想是在内存中建立你确实想要的东西，然后更新DOM 。这并不是一个jQuery最佳实践，但必须进行有效的JavaScript操作 。直接的DOM操作速度很慢。<br />
例如，你想动态的创建一组列表元素，千万不要这样做,如下所示：</p>
<p>var top_100_list = [...], // 假设这里是100个独一无二的字符串$mylist = $(“#mylist”); // jQuery 选择到 </p>
<p>元素for (var i=0, l=top_100_list.length; i” + top_100_list[i] + “<br />
“);}<br />
我们应该将整套元素字符串在插入进dom中之前先全部创建好，如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> top_100_list <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>...<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>$mylist <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#mylist&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> top_100_li <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// 这个变量将用来存储我们的列表元素</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> l<span style="color: #339933;">=</span>top_100_list.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>l<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>   top_100_li <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;&lt;li&gt;&quot;</span> <span style="color: #339933;">+</span> top_100_list<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;&lt;/li&gt;&quot;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>$mylist.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span>top_100_li<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>5，冒泡<br />
除非在特殊情况下, 否则每一个js事件(例如:click, mouseover等.)都会冒泡到父级节点。<br />
当我们需要给多个元素调用同个函数时这点会很有用。</p>
<p>代替这种效率很差的多元素事件监听的方法就是, 你只需向它们的父节点绑定一次。</p>
<p>比如, 我们要为一个拥有很多输入框的表单绑定这样的行为: 当输入框被选中时为它添加一个class</p>
<p>传统的做法是，直接选中input，然后绑定focus等，如下所示：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#entryform input&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;focus&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>     $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;selected&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;blur&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>     $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;selected&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>当然上面代码能帮我们完成相应的任务，但如果你要寻求更高效的方法，请使用如下代码：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#entryform&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;focus&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #003366; font-weight: bold;">var</span> $cell <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// e.target 捕捉到触发的目标元素     </span>
$cell.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;selected&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;blur&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>     <span style="color: #003366; font-weight: bold;">var</span> $cell <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>     $cell.<span style="color: #660066;">removeClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;selected&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>通过在父级监听获取焦点和失去焦点的事件，对目标元素进行操作。<br />
在上面代码中，父级元素扮演了一个调度员的角色, 它可以基于目标元素绑定事件。<br />
如果你发现你给很多元素绑定了同一个事件监听, 那么现在的你肯定知道哪里做错了。<br />
6，推迟到 $(window).load<br />
jQuery对于开发者来说有一个很诱人的东西, 可以把任何东西挂到$(document).ready下。<br />
尽管$(document).rady 确实很有用， 它可以在页面渲染时，其它元素还没下载完成就执行。<br />
如果你发现你的页面一直是载入中的状态，很有可能就是$(document).ready函数引起的。</p>
<p>你可以通过将jQuery函数绑定到$(window).load 事件的方法来减少页面载入时的cpu使用率。<br />
它会在所有的html(包括iframe)被下载完成后执行。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>     <span style="color: #006600; font-style: italic;">// 页面完全载入后才初始化的jQuery函数.});</span></pre></div></div>

<p>一些特效的功能，例如拖放, 视觉特效和动画, 预载入隐藏图像等等，都是适合这种技术的场合。<br />
7，压缩JavaScript在线压缩地址: http://dean.edwards.name/packer/<br />
压缩之前，请保证你的代码的规范性，否则可能失败，导致Js错误。</p>
<p>英文原文：</p>
<p>http://www.artzstudio.com/2009/04/jquery-performance-rules/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/387/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery写的展开收起效果</title>
		<link>http://www.wenan8.com/blog/archives/239</link>
		<comments>http://www.wenan8.com/blog/archives/239#comments</comments>
		<pubDate>Wed, 05 May 2010 06:53:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[展开叠起]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=239</guid>
		<description><![CDATA[开始学习jQuery,写几个简单的效果. &#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62; &#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62; &#60;head&#62; &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&#62; &#60;title&#62;just think it&#60;/title&#62; &#60;link href=&#34;http://www.wenan8.com/test/test.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34; /&#62; &#60;script language=&#34;javascript&#34; src=&#34;http://www.wenan8.com/test/jquery.js&#34;&#62;&#60;/script&#62; &#60;script language=&#34;javascript&#34; src=&#34;http://www.wenan8.com/test/just.js&#34;&#62;&#60;/script&#62; &#60;/head&#62; &#60;body&#62; &#60;div class=&#34;jzbkCon&#34;&#62; &#60;div class=&#34;proList&#34;&#62; &#60;div class=&#34;plTitle&#34;&#62;&#60;a href=&#34;#&#34;&#62;域名的类别都有哪些？&#60;/a&#62;&#60;em&#62;展开&#60;/em&#62;&#60;/div&#62; &#60;div class=&#34;plCon&#34;&#62;绑定域名是指，将您要使用的域名绑定在您的网站空间即服务器主机的IP地址上，输入域 名就可以直接指向服务器IP，从而访问服务器该IP下的内容。如果您已经申请了一个域名，同时也申请了一个网站空间，那么怎样 通过您的域名访问到已经上传到空间上的网站呢？ 1、 先把您域名的A记录，指向你的网站空间IP地址上面，这个过程叫：域名解析 2、 在你的网站空间上面绑定你的域名。这样无论输入您的域名，还是IP地址都可以找 到您的网页。&#60;/div&#62; &#60;/div&#62; &#60;div class=&#34;proList&#34;&#62; &#60;div class=&#34;plTitle&#34;&#62;&#60;a href=&#34;#&#34;&#62;域名的类别都有哪些？&#60;/a&#62;&#60;em&#62;展开&#60;/em&#62;&#60;/div&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>开始学习jQuery,写几个简单的效果.</p>
<div class="runcode">
<p><textarea name="runcode" style="height:300px;width:600px;font-size:12px" class="runcode_text" id="runcode_Xyu_QI">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;just think it&lt;/title&gt;
&lt;link href=&quot;http://www.wenan8.com/test/test.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
&lt;script language=&quot;javascript&quot; src=&quot;http://www.wenan8.com/test/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;javascript&quot; src=&quot;http://www.wenan8.com/test/just.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class=&quot;jzbkCon&quot;&gt;
&lt;div class=&quot;proList&quot;&gt;
&lt;div class=&quot;plTitle&quot;&gt;&lt;a href=&quot;#&quot;&gt;域名的类别都有哪些？&lt;/a&gt;&lt;em&gt;展开&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;plCon&quot;&gt;绑定域名是指，将您要使用的域名绑定在您的网站空间即服务器主机的IP地址上，输入域 名就可以直接指向服务器IP，从而访问服务器该IP下的内容。如果您已经申请了一个域名，同时也申请了一个网站空间，那么怎样 通过您的域名访问到已经上传到空间上的网站呢？ 1、 先把您域名的A记录，指向你的网站空间IP地址上面，这个过程叫：域名解析 2、 在你的网站空间上面绑定你的域名。这样无论输入您的域名，还是IP地址都可以找 到您的网页。&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;proList&quot;&gt;
&lt;div class=&quot;plTitle&quot;&gt;&lt;a href=&quot;#&quot;&gt;域名的类别都有哪些？&lt;/a&gt;&lt;em&gt;展开&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;plCon&quot;&gt;绑定域名是指，将您要使用的域名绑定在您的网站空间即服务器主机的IP地址上，输入域 名就可以直接指向服务器IP，从而访问服务器该IP下的内容。如果您已经申请了一个域名，同时也申请了一个网站空间，那么怎样 通过您的域名访问到已经上传到空间上的网站呢？ 1、 先把您域名的A记录，指向你的网站空间IP地址上面，这个过程叫：域名解析 2、 在你的网站空间上面绑定你的域名。这样无论输入您的域名，还是IP地址都可以找 到您的网页。&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;proList&quot;&gt;
&lt;div class=&quot;plTitle&quot;&gt;&lt;a href=&quot;#&quot;&gt;域名的类别都有哪些？&lt;/a&gt;&lt;em&gt;展开&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;plCon&quot;&gt;绑定域名是指，将您要使用的域名绑定在您的网站空间即服务器主机的IP地址上，输入域 名就可以直接指向服务器IP，从而访问服务器该IP下的内容。如果您已经申请了一个域名，同时也申请了一个网站空间，那么怎样 通过您的域名访问到已经上传到空间上的网站呢？ 1、 先把您域名的A记录，指向你的网站空间IP地址上面，这个过程叫：域名解析 2、 在你的网站空间上面绑定你的域名。这样无论输入您的域名，还是IP地址都可以找 到您的网页。&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;proList&quot;&gt;
&lt;div class=&quot;plTitle&quot;&gt;&lt;a href=&quot;#&quot;&gt;域名的类别都有哪些？&lt;/a&gt;&lt;em&gt;展开&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;plCon&quot;&gt;绑定域名是指，将您要使用的域名绑定在您的网站空间即服务器主机的IP地址上，输入域 名就可以直接指向服务器IP，从而访问服务器该IP下的内容。如果您已经申请了一个域名，同时也申请了一个网站空间，那么怎样 通过您的域名访问到已经上传到空间上的网站呢？ 1、 先把您域名的A记录，指向你的网站空间IP地址上面，这个过程叫：域名解析 2、 在你的网站空间上面绑定你的域名。这样无论输入您的域名，还是IP地址都可以找 到您的网页。&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;proList&quot;&gt;
&lt;div class=&quot;plTitle&quot;&gt;&lt;a href=&quot;#&quot;&gt;域名的类别都有哪些？&lt;/a&gt;&lt;em&gt;展开&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;plCon&quot;&gt;绑定域名是指，将您要使用的域名绑定在您的网站空间即服务器主机的IP地址上，输入域 名就可以直接指向服务器IP，从而访问服务器该IP下的内容。如果您已经申请了一个域名，同时也申请了一个网站空间，那么怎样 通过您的域名访问到已经上传到空间上的网站呢？ 1、 先把您域名的A记录，指向你的网站空间IP地址上面，这个过程叫：域名解析 2、 在你的网站空间上面绑定你的域名。这样无论输入您的域名，还是IP地址都可以找 到您的网页。&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea></p>
<p><input type="button" value="Run" class="runcode_button" onclick="runcode_open_new('runcode_Xyu_QI');"/> <input type="button" value="Copy" class="runcode_button" onclick="runcode_copy('runcode_Xyu_QI');"/> <input type="button" value="Save As" class="runcode_button" onclick="saveCode('runcode_Xyu_QI','runcode_Xyu_QI');"/> Tips:You can change the code before run.</p>
</div>
<p>代码很简单源于jQuery很强大</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">   <span style="color: #003366; font-weight: bold;">var</span> $category<span style="color: #339933;">=</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.proList &amp;gt; .plCon&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$category.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> $toggleBtn<span style="color: #339933;">=</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.plTitle &amp;gt; em&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//alert($toggleBtn.html());</span>
	$toggleBtn.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	 <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">parent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.plTitle&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066; font-weight: bold;">is</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;:visible&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	   $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">parent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.plTitle&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideUp</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prev</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.plTitle &amp;gt; a&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;background&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;url
&nbsp;
(http://www.wenan8.com/test/icon1.gif) no-repeat left center&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;background&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;url(http://www.wenan8.com/test/icon3.gif) 
&nbsp;
no-repeat left center&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;展开&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	 <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
	   $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">parent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.plTitle&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideDown</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prev</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;.plTitle &amp;gt; a&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;background&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;url
&nbsp;
(http://www.wenan8.com/test/ico.gif) no-repeat left center&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	   $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;background&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;url(http://www.wenan8.com/test/icon12.gif) 
&nbsp;
no-repeat left center&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;收起&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	 <span style="color: #009900;">&#125;</span>
	 <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascrip中文输出乱码</title>
		<link>http://www.wenan8.com/blog/archives/270</link>
		<comments>http://www.wenan8.com/blog/archives/270#comments</comments>
		<pubDate>Mon, 05 Apr 2010 08:07:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[javascit中文乱码]]></category>

		<guid isPermaLink="false">http://www.wenan8.com/blog/?p=270</guid>
		<description><![CDATA[编码是utf-8 那么js中如果有中文则会输出乱码。 解决方法： 将js保存为 utf-8编码的形式 或者： &#60;script type=&#34;text/javascript&#34; language=&#34;javascript&#34; src=&#34;scripts/output.js&#34; charset=&#34;gb2312&#34;&#62;&#60;/script&#62;]]></description>
			<content:encoded><![CDATA[<p>编码是utf-8<br />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><br />
那么js中如果有中文则会输出乱码。<br />
解决方法：<br />
将js保存为 utf-8编码的形式<br />
或者：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> language<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;scripts/output.js&quot;</span> charset<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;gb2312&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.wenan8.com/blog/archives/270/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

