<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[风雨轩]]></title>
<link>http://www.fenglog.com/blog/</link>
<description><![CDATA[---- 静憩风雨轩，与你听风赏雨！]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[lucklier@163.com(随风)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>风雨轩</title> 
	<url>http://www.fenglog.com/blog/images/logos.gif</url> 
	<link>http://www.fenglog.com/blog/</link> 
	<description>风雨轩</description> 
</image>

			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=421</link>
			<title><![CDATA[asp.net 在global中拦截404错误]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Thu,25 Feb 2010 16:34:36 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=421</guid>	
		<description><![CDATA[啥也不说，贴上代码，地球人都看的明白。<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.fenglog.com/blog/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;void&nbsp;Application_Error(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Context&nbsp;!=&nbsp;null)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext&nbsp;ctx&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;HttpContext.Current;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exception&nbsp;ex&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;ctx.Server.GetLastError();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpException&nbsp;ev&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;ex&nbsp;as&nbsp;HttpException;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ev!=&nbsp;null)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ev.GetHttpCode()&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;404)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.ClearError();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Redirect(&#34;~/nofound.aspx&#34;,&nbsp;false);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.End();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Server.Transfer(&#34;~/Error.aspx&#34;,&nbsp;false);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/></div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=420</link>
			<title><![CDATA[《春运手册》：火车篇 票务攻略]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[杂货仓库]]></category>
			<pubDate>Mon,08 Feb 2010 01:06:25 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=420</guid>	
		<description><![CDATA[《春运手册》：火车篇&nbsp;票务攻略<br/><br/><br/>核心提示：辨别火车票的真伪最主要是看其印刷质量。真火车票均采用特制纸张，电脑打印，因此字迹清晰、票面干净，同时，票面的水波纹线细密、逆光看有明显的水印且印有条形码。另外，还可通过沾水、手摸、逆光照看等方法来识别。<br/><br/>中国网1月24日报道<br/><br/>1.尽量少带行李，如果非带不可，在候车时注意观察，有火车站的工作人员(一般穿蓝色衣服或者戴小红帽)组织提前上车的，一般价格是5元一人(代运行李好象是2元一件，个人认为没必要花这钱，自己拎着去一样的)，提前5—30min上车。即使5分钟，也是很关键的，那意味着行李架上的一个空位。<br/><br/>特别提醒学生一族，不要带书回家。那些个准备回家看书复习的，别自欺欺人了，以我和我N多同学四年的实际经验，假期看书那纯属童话，每个假期都是把书背回家，放着，开学再背到学校，忒累。<br/><br/>2.除了行李，准备一个随身的小包，最好是腰包，装证件，重要的东西，现金。带点现金是很必要的，不过不必多，50足够，万一不幸被偷了也不会很难过。<br/><br/>如果是学生，带了数码相机之类的，要么时刻盯紧了，要么装在行李箱里放在行李架上。那样反而不会引起别人注意。因为学生，人们普遍认为是没钱的，箱子里装的肯定也都是书，所以被偷的几率相对较小。<br/><br/>3.上车后多和周围的人交流，一来摸清周围人的基本情况，二来旅途漫长也好打发时间。上个厕所啥的还可以拜托周围的人给看下行李。重要包裹就随身携带吧。<br/><br/>4.上厕所时千万注意，有无数的人在上厕所时把钱包、手表、钥匙、手机掉到小洞洞里。老车小洞洞是敞开的，掉了就丢了。新车好一点，洞口是关闭的，可以捞上来。但是。。。但是。。。坐过火车的应该知道，火车上的厕所那是相~~当~~~的脏<br/><br/>5.如果坐硬座，建议随身携带食物，水，外套，报纸。食物最好不要买甜的，如蛋糕之类，火车上吃那东西特腻。水自己看着带吧，带少了不够喝，带多了上厕所，反正别指望车上的水。空调车晚上通常很冷，一定带个外套，稍微厚点的。万一车上没有座位，又站的很累了，就铺个报纸坐地下。这种时候没啥形象不形象的，舒服最重要。即使有座位的也建议铺个报纸，把鞋子脱了，放脚。坐火车腿和脚会有一定程度的浮肿，穿着鞋到第二天会很难受。<br/><br/>6.买到站票的，要挑好人少的地方。因为春运人多，走个路都是踩着人的胳膊腿过去的，所以不要想着窜来窜去找空位，一开始就挑好位置。实在挑不到位置的也没啥，大不了站回去。年轻人嘛~~想当年我一同学在东北上学，回新疆老家，小姑娘哦，站了将近90个小时到的家。(东北到北京十几个小时，北京到新疆那时候还没提速，72小时)<br/><br/>那么车上的位置呢，最好的就是靠近卧铺车厢的那一节硬座车厢。列车员管理不是很严格的话，白天可以蹭到卧铺车厢去坐，晚上就待在车厢连接处。或者去餐车，交30块钱，可以在那里过夜。<br/><br/>7.我有一个同学，播音水平不错(后来毕业被北京广播电台要走了)，坐火车买了个硬座。这厮上车一会儿后，就去找列车播音员，跟他讲自己如何如何喜欢播音，自己播的如何如何好，提出替播音员播音。播音员正烦干这个呢，很高兴就让他做了。在一白天的时间里，把列车员们哄的高高兴兴的，晚上混了个列车员卧铺，还是免费的。<br/><br/>8.火车上的厕所，尤其是春运期间的，要提前半个小时到一个小时去排队。一是人多，另一个原因是有些逃票的，站票的，会长时间躲在里面不出来。厕所虽然脏，其实是个好地方，开了窗户吹着风，站着也没人挤，是仅次于卧铺和餐车的好去处。但长时间占据厕所多少是个不太道德的事儿，劝大家还是不要打厕所的主意。内急的人呢，排队的时候要经常敲门，敲啊敲啊敲啊。。。<br/><br/>9.坐卧铺的就没这么多顾虑了，注意晚上不要被空调吹到，图舒服的话带双拖鞋，就行了。<br/><br/>10.如果您要托运，一定要到车站行李房去，不要轻易相信一些在广场上主动要求帮人托运行李的闲散人员。行李的托运范围指旅客自用的被褥、衣服，个人阅读的书籍、残疾人车和其他旅客必需品。行李中不得夹带货币、证券、珍贵文物、金银珠宝、档案材料等贵重物品和国家禁止、限制运输的物品和危险品。每件行李最大重量为50公斤，体积以适于装入行李车为限，但最小不得小于0.01立方米。<br/><br/>11.携带物品应严格按照铁路部门的相关规定。危险物品切忌不要带上车，另外铁路不能判明性质的化工产品、动物及妨碍公共卫生(包括有恶臭等等异味)的物品，损坏或污染车辆的物品以及规格和重量超过《铁路旅客运输规程》规定的物品，一律不准带上车。<br/><br/>12.带儿童出行要留心。随同成人旅行身高1.1米至1.4米的儿童，享受半票待遇，超过1.4米时应买全价票。免费乘车的儿童单独使用卧铺时，应购买全价卧铺票，有空调时还应购买半价空调票。带着儿童出行的旅客在上下车时，要随时照看好自己的孩子。<br/><br/>13.卧铺换牌要及时。最后提醒一下持卧铺票的旅客，由于半个小时内列车员会过来给您换卧铺牌，所以上车后不要离开太久。如果您离开的时间超过1小时，铁路人员有权将您的铺位卖出去。<br/><br/>另：春运火车特别提示<br/><br/>1.根据自己的所在地.最好找有始发车的列车购票.因为这个买到有座位的车票的机会比较大.过路车的无座票最好不要买.因为你就是买到了车票也不一定上得了车.<br/><br/>2.我相信大家很多不是第一次做火车,所以可以根据的所乘的列车人多还是人少自己判明好这次列车到底人多还是人少,一般来说热门车基本一年365天有300天都是超员状态,最好的就是避开这样的列车.最好按照时刻表上的列车买票,列车离你越近发车的越好.因为这样的人相对来说越少.<br/><br/>3.马上临时客车就来开行了,根据我每年经验,春运有个最大的特点,正班列车的人数往往大于临时客车的人数,很多旅客都是根据自己知道的列车买票,这样不好.只会把旅客积压在一趟列车上,所以请大家密切关注临时列车的开行,如果可以买到有座位的临时座位票又何苦去挤有时候根本没机会上去的正班列车呢.一般来说临时列车的上座率比正班列车小得多.<br/><br/>4.这里是给短途旅客的一点建议,一般来说春运来临,每趟列车肯定有不同程度的超员,更甚者你根本没机会上车,对于列车超员很多列车员的做法是保证旅客下车后干脆不开门,或者就开一个门缝,你与其这样不如选择汽车或者其他的交通工具,虽然贵了点,但我相信比你去做火车安全,舒适的多.假想象下,坐在舒适的座位,悠然点上一根烟,安心的欣赏回家美景,多惬意.<br/><br/>5.春运坐车,千万不要带很多行李,能不带的尽量不要带,能办理行李托运的尽量办理托运,你想想本来人多比较难上车了,你带着大大小小的一大堆如何冲锋在人海里,你应该有所感悟的,行李越少的越好上车.春运是个没有硝烟的战场,只有减轻所有的负担,你才能轻易的占取一席之地.所以给大家的建议就是如果你还要回来的话最好把自己没用的东西留到原地,有必要带回家的大件物品去办理托运,虽然贵了点,但我相信你尝试过以后就知道好处的.人都照顾不了,还带着笨重的包裹,是何苦嘛.<br/><br/>6.超员情况下,上了车的旅客尽可能的往车厢里面走,越中间越好,因为人都是两头上的,大家有种误区认为门口最舒服.其实门口的流动最大,说不定这个站你刚站稳,下个站开门以后,你也许连站的地方都没有了,所以在车厢中间找个比较固定的地方还是比较好的.<br/><br/><br/>7.因为列车超员,打开水和上厕所将是个很难的挑战.所以给大家的建议的少喝水,尽量自己购买水,列车上都是开水,人多的情况下,打开水怕烫着自己.烫了别人了就麻烦了.少喝水可以减少下厕所的次数.列车超员以后.列车员是根本没有办法清扫卫生的,所以大家想舒适和干净点最好自己带个塑料带,把垃圾丢到带子里面.<br/><br/>8.对老,病,孕,幼.这些重点旅客,大家能尽量买到卧铺就去买卧铺,一般来说,列车办公在列车中部,餐车靠硬座车旁边,我相信,你如果真正有困难,列车上一定会想办法解决的.<br/><br/>9.大家上车以后尽量配合列车员的工作,我知道有许多人对列车的工作人员成见很大,但我相信列车员品德差的毕竟没有几个,绝大部分还是肯为大家办事的,我们一样愿意你们安全到达目的地.有很多大家不可以理解的地方也是我们工作性质决定的.<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=419</link>
			<title><![CDATA[随语]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[心情小窗]]></category>
			<pubDate>Sun,24 Jan 2010 22:20:53 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=419</guid>	
		<description><![CDATA[其实最近很多心情的，只是都没时间写，所以先憋在心里了。]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=418</link>
			<title><![CDATA[【转】jQuery 1.4: 15个你应该知道的新特性(译)]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Sun,24 Jan 2010 22:19:55 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=418</guid>	
		<description><![CDATA[<p>原文地址：<a href="http://net.tutsplus.com/tutorials/javascript-ajax/jquery-1-4-released-the-15-new-features-you-must-know"><font color="#9f8248">http://net.tutsplus.com/tutorials/javascript-ajax/jquery-1-4-released-the-15-new-features-you-must-know</font></a></p>
<p>jQuery 1.4 <a href="http://jquery14.com/day-01/jquery-14"><font color="#9f8248">最近刚刚发布</font></a>. 这个版本可不是一个简单的改进,它不仅包含了很多新的特性，还改进了很多功能, 更在性能优化方面下了很大功夫, 本文将对这些新的特性和增强的部分进行讨论,希望能对你有所帮助. </p>
<p>首先现在你可以从这里下载最新的1.4的版本了: <a href="http://code.jquery.com/jquery-1.4.js"><font color="#9f8248">http://code.jquery.com/jquery-1.4.js</font></a> </p>
<h3>1. 传递属性给jQuery </h3>
<p>1.4之前的版本中jQuery就通过&quot;attr&rdquo;方法支持了添加属性到元素集合中，&quot;attr&rdquo;方法不仅可以传递属性名和值，也可以传递包含有多个属性的对象集合。在1.4中，除了可以创建新的对象，现在它更能将属性对象作为参数传递给jQuery函数或对象自身。如你可以创建一个含有多个属性的链接元素，通过1.4代码如下：</p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000"><br /> jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&lt;a/&gt;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, {  <br />     id: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">gid</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,  <br />     href: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">http://www.google.com</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,  <br />     title: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">google非和谐版</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,  <br />     rel: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">external</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,  <br />     text: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">进入Google!</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">  <br /> });  </span></div>
</pre>
</div>
<p>你可能会注意到&quot;text&rdquo;属性并且猜测它是干吗的，因为a标签是没有&quot;text&rdquo;属性的。呵呵，当你传递某些属性时，jquery 1.4同样会检查并使用它自己的方法。因此上面的&quot;text&rdquo;属性可以让jQuery调用它的&quot;.text()&rdquo;方法并将&quot;进入Google!&ldquo;作为它的唯一参数。 </p>
<p>这里给出一个更好的例子： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000"> jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&lt;div/&gt;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, {  <br />     id: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">foo</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,  <br />     css: {  <br />         fontWeight: </span><span style="COLOR: #000000">700</span><span style="COLOR: #000000">,  <br />         color: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">green</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">  <br />     },  <br />     click: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){  <br />         alert(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Foo被点击过!</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);  <br />     }  <br /> });  </span></div>
</pre>
</div>
<p>&quot;id&rdquo;属性是作为一个普通属性被添加的。但&quot;css&rdquo;和&quot;click&rdquo;属性则对应特定的jQuery方法。上面的代码在1.4之前一种写法如下： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000"> jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&lt;div/&gt;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)  <br />     .attr(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">id</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">foo</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)  <br />     .css({  <br />         fontWeight: </span><span style="COLOR: #000000">700</span><span style="COLOR: #000000">,  <br />         color: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">green</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">  <br />     })  <br />     .click(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){  <br />         alert(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Foo被点击过!</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);  <br />     });  </span></div>
</pre>
</div>
<p>&nbsp;</p>
<p><a href="http://api.jquery.com/jQuery/"><font color="#9f8248">更多关于jQuery特性</font></a></p>
<h3>2. 所有的东西都可以&quot;until&ldquo;了</h3>
<p>1.4新增了三个对DOM操作的方法，他们分别是&quot;<code>nextUntil</code>&quot;,&nbsp; &quot;<code>prevUntil</code>&quot;&nbsp; 和&nbsp; &quot;<code>parentsUntil</code>&quot;。 这些方法会按照某个顺序去遍历DOM对象直到满足指定的筛选条件。假设我们有一个水果列表： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ul</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">苹果</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">香蕉</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">葡萄</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">草莓</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">例子</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">桃子</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ul</span><span style="COLOR: #0000ff">&gt;</span></div>
</pre>
</div>
<p>如果你想选择所有在&quot;Apple&rdquo;和&quot;Strawberry&rdquo;之间的元素。代码可以这样写： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000"> jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">ul li:contains(苹果)</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).nextUntil(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">:contains(梨子)</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);  <br /> </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 得到 香蕉，葡萄，草莓</span></div>
</pre>
</div>
<p>更多关于: <a href="http://api.jquery.com/prevUntil/"><font color="#9f8248">prevUntil</font></a>, <a href="http://api.jquery.com/nextUntil/"><font color="#9f8248">nextUntil</font></a>, <a href="http://api.jquery.com/parentsUntil/"><font color="#9f8248">parentsUntil</font></a></p>
<h3>3. 绑定多个事件</h3>
<p>与通过jquery链绑定多个方法到一起相比，现在你可以通过一次调用来绑定所有这些事件，如： </p>
<div class="cnblogs_code" onclick="cnblogs_code_show('f34285c2-08ac-439d-99d2-19370a4cf75e')"><img class="code_img_closed" id="code_img_closed_f34285c2-08ac-439d-99d2-19370a4cf75e" style="DISPLAY: none" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" alt="" /><img class="code_img_opened" id="code_img_opened_f34285c2-08ac-439d-99d2-19370a4cf75e" onclick="cnblogs_code_hide('f34285c2-08ac-439d-99d2-19370a4cf75e',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" />
<div id="cnblogs_code_open_f34285c2-08ac-439d-99d2-19370a4cf75e">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">#foo).bind({  <br />     click: function() {  <br />         // 具体代码 <br />     },  <br />     mouseover: function() {  <br />         // 具体代码<br />     },  <br />     mouseout: function() {  <br />         // 具体代码 <br />     }  <br /> })  </span></div>
</pre>
</div>
</div>
<p>&nbsp;</p>
<p>你也可以通过 &quot;<code>.one()</code>&quot;方法操作。 </p>
<p><a href="http://api.jquery.com/bind/"><font color="#9f8248">更多关于.bind(&hellip;)</font></a> </p>
<h3>4. Per-Property Easing</h3>
<p>与给一个动画仅仅定义一个缓动效果相比，现在你可以给你想要添加动画效果的属性定义不同的缓动函数了。jQuery包含两个缓动函数，旋转(默认)和线性移动。如果你需要其他的效果的话，你需要去<a href="http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js"><font color="#9f8248">单独下载它们 </font></a>! </p>
<p>要给每个属性指定一个缓动函数的话，你可以简单的通过属性数组来达到目的，在数组中，第一个值是你想要实现的效果值，第二个参数则是使用的缓动函数，如： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000"> jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">#foo</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).animate({  <br />     left: </span><span style="COLOR: #000000">500</span><span style="COLOR: #000000">,  <br />     top: [</span><span style="COLOR: #000000">500</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">easeOutBounce</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]  <br /> }, </span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">);  </span></div>
</pre>
</div>
<p>&nbsp;</p>
<p><a href="http://james.padolsey.com/demos/jquery/easing/easing-jq14.html"><font color="#9f8248">查看代码演示!</font></a> </p>
<p>你也可以以键值对的形式在那些可选设置项中单独指定属性缓动函数： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000"> jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">#foo</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).animate({  <br />     left: </span><span style="COLOR: #000000">500</span><span style="COLOR: #000000">,  <br />     top: </span><span style="COLOR: #000000">500</span><span style="COLOR: #000000">  <br /> }, {  <br />     duration: </span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">,  <br />     specialEasing: {  <br />         top: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">easeOutBounce</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">  <br />     }  <br /> });  </span></div>
</pre>
</div>
<p>&nbsp;</p>
<p><b>原文作者注 - 小小谦虚一下，这个新特性是作者<b>James Padolsey</b>的主意! </b></p>
<p><a href="http://api.jquery.com/animate/#per-property-easing"><font color="#9f8248">更多关于per-property easing</font></a> </p>
<h3>5. 新的Live事件!</h3>
<p>1.4添加了对&quot;submit&rdquo;,&quot;change&rdquo;,&quot;focus&rdquo;,和&quot;blur&rdquo;事件的委托支持。在jQuery中，我们可以使用&quot;.live()&rdquo;方法去委托事件。这在你需要注册事件到大量元素中或新的元素需要不断的被添加(使用&quot;.live()&rdquo;会比不断的重新绑定事件更高效)将会很有用。 </p>
<p><b>但是，注意</b>！如果你需要委托&quot;focus&rdquo;和&quot;blur&rdquo;事件的时候，你必须使用&quot;focusin&rdquo;和&quot;focusout&rdquo;事件名称！ </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">input</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).live(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">focusin</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){<br />    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">具体操作</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">});</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>6. 控制函数的上下文</h3>
<p>jQuery 1.4提供了一个新的叫&quot;proxy&rdquo;的函数，它在jQuery命名空间下。该函数需要两个参数，不管是代码域还是方法名，或者是函数和其所处的代码域。t&quot;this&rdquo;关键字在JavaScrip中是相当难掌握的。有时候你可能期待它指的是你之前创建的某个对象，而不是一个你可能没想到的元素。 </p>
<p>举例说明，假设我们有一个&quot;app&rdquo;对象，它有两个属性，一个是&quot;clickHandler&rdquo;方法, 另外一个则是一个config对象。 </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> app </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {<br />    config: {<br />        clickMessage: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">你好!</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"><br />    },<br />    clickHandler: </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() {<br />        alert(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.config.clickMessage);<br />    }<br />};</span></div>
</pre>
</div>
<p>当我们调用如&quot;<code>app.clickHandler()</code>&quot;时，&quot;<code>clickHandler</code>&quot;会将&quot;app&rdquo;作为其上下文。这意味着在这里&quot;<code>this</code>&quot;关键字将允许其访问&quot;<code>app</code>&quot;。这在我们简单调用下面函数时没什么问题：</p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">app.clickHandler(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> &quot;你好!&quot; 消息触发</span></div>
</pre>
</div>
<p>让我们试试将其作为事件绑定会有什么情况： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).bind(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">click</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, app.clickHandler);</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>当我们点击一个链接的时候什么都不会发生，函数不会工作。这是因为jQuery(其他任何正常的事件模型同样如此)默认会把目标元素a设置成为事件的上下文。即&quot;this&rdquo;现在其实是指刚刚被点击过的元素a。但我们实际上并不想这样子的。我们期待&quot;this&rdquo;应该被设置为&quot;app&rdquo;.在jQuery 1.4中实现这个再简单不过了： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).bind(<br />    </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">click</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,<br />    jQuery.proxy(app, </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">clickHandler</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br />);</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>现在无论什么时候一个链接被点击到，&quot;你好&quot;的消息都会被触发了！ </p>
<p>proxy函数会返回一个你的函数被&quot;包装过&quot;之后的对象，在该对象中，&quot;this&rdquo;被设置成任意你指定的对象。这在其他的情景下同样有用，如传递回调函数给其他的jQuery对象或者一些插件的时候。 </p>
<p>更多关于<a href="http://api.jquery.com/jQuery.proxy"><code><font color="#9f8248">jQuery.proxy</font></code></a> </p>
<h3>7. 在动画中添加停顿</h3>
<p>现在你可以再你的动画队列中添加停顿效果了。事实上，任何队列中都可以添加该函数，但最常用的情况应该还是在使用&quot;fx&rdquo;队列的时候。这允许你在多个动作中间添加暂停而不需要通过回调函数去调用&quot;<code>setTimeout</code>&quot;。&quot;<code>.delay()</code>&quot; 函数的第一个参数是你想停顿的毫秒数。 </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">#foo</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br />    .slideDown() </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Slide down</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">    .delay(</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">) </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 停顿 200 ms</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">    .fadeIn(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Fade in</span></div>
</pre>
</div>
<p>如果你想给其他不是默认的&quot;fx&rdquo;的队列也添加停顿的话，这时候，你需要将队列名作为第二个参数传递给&quot;<code>.delay()</code>&quot;。 </p>
<p><a href="http://api.jquery.com/delay"><font color="#9f8248">更多关于<code>.delay(&hellip;)</code></font></a> </p>
<h3>8. 检查元素是否拥有某对象</h3>
<p>通过&quot;.has()&rdquo;方法，jQuery 1.4使得检查一个元素(或者集合)是不是有某对象变得相当简单。从程序角度看，它和jQuery的selector过滤器&quot;:has()&rdquo;是一样的。该方法会返回在当前集合中所有包含有至少一个符合条件的元素数组。 </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).has(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">ul</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>上面方法会返回所有包含有UL元素的DIV元素数组。在这种情况下，你可能会更倾向于简单使用选择器的过滤器(&quot;<code>:has()</code>&quot;), 但当你需要通过代码过滤一个数组的时候，该方法仍会很有用。 </p>
<p>1.4同样在jQuery命名空间下添加了新的&quot;<code>contains</code>&quot;函数。这是一个低级的函数，它接受两个DOM节点作为参数。它会返回一个布尔值来表示后面一个元素是否在前面一个元素中存在。如： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery.contains(document.documentElement, document.body);<br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 返回true - &lt;body&gt;在&lt;html&gt;存在</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>更多关于: <a href="http://api.jquery.com/has/"><code><font color="#9f8248">.has(&hellip;)</font></code></a>, <a href="http://api.jquery.com/jQuery.contains/"><code><font color="#9f8248">jQuery.contains(&hellip;)</font></code></a></p>
<h3>9. 去掉元素的包装</h3>
<p>&quot;.warp()&rdquo;已经在jQuery中有段日子了，现在跟它对应的&quot;.unwrap()&rdquo;方法也被加进到1.4中了。这个方法刚好跟warp()方法相反。假设有下面的DOM结构：</p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">p</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Foo</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">p</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span></div>
</pre>
</div>
<p>我们可以用下面的函数去掉段落元素的外层：</p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).unwrap();</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>最终的DOM结构如下：</p>
<div class="syntaxhighlighter  xml" id="highlighter_598062">
<div class="bar ">
<div class="toolbar"><a class="item viewSource" title="view source" style="WIDTH: 16px; HEIGHT: 16px" href="http://www.cnblogs.com/jujusharp/archive/2010/01/24/jquery-1-4-the-15-new-features-you-must-know.html#viewSource" commandname="viewSource" highlighterid="highlighter_598062">view source</a>
<div class="item copyToClipboard"><object id="highlighter_598062_clipboard" title="copy to clipboard" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash" height="16" width="16" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param value="423" name="_cx" />
<param value="423" name="_cy" />
<param value="" name="FlashVars" />
<param value="http://common.cnblogs.com/flash/clipboard.swf" name="Movie" />
<param value="http://common.cnblogs.com/flash/clipboard.swf" name="Src" />
<param value="Transparent" name="WMode" />
<param value="0" name="Play" />
<param value="-1" name="Loop" />
<param value="High" name="Quality" />
<param value="" name="SAlign" />
<param value="0" name="Menu" />
<param value="" name="Base" />
<param value="always" name="AllowScriptAccess" />
<param value="ShowAll" name="Scale" />
<param value="0" name="DeviceFont" />
<param value="0" name="EmbedMovie" />
<param value="" name="BGColor" />
<param value="" name="SWRemote" />
<param value="" name="MovieData" />
<param value="1" name="SeamlessTabbing" />
<param value="0" name="Profile" />
<param value="" name="ProfileAddress" />
<param value="0" name="ProfilePort" />
<param value="all" name="AllowNetworking" />
<param value="false" name="AllowFullScreen" /></object></div>
<a class="item printSource" title="print" style="WIDTH: 16px; HEIGHT: 16px" href="http://www.cnblogs.com/jujusharp/archive/2010/01/24/jquery-1-4-the-15-new-features-you-must-know.html#printSource" commandname="printSource" highlighterid="highlighter_598062">print</a><a class="item about" title="?" style="WIDTH: 16px; HEIGHT: 16px" href="http://www.cnblogs.com/jujusharp/archive/2010/01/24/jquery-1-4-the-15-new-features-you-must-know.html#about" commandname="about" highlighterid="highlighter_598062">?</a></div>
</div>
<div class="lines">
<div class="line alt1">
<table>
    <tbody>
        <tr>
            <td class="number"><code>1</code></td>
            <td class="content"><code class="xml plain">&lt;</code><code class="xml keyword"><strong><font color="#006699">p</font></strong></code><code class="xml plain">&gt;Foo&lt;/</code><code class="xml keyword"><strong><font color="#006699">p</font></strong></code><code class="xml plain">&gt;</code></td>
        </tr>
    </tbody>
</table>
</div>
</div>
</div>
<p>注意，这个方法处理比较简单，它会移掉任何元素的父节点。 </p>
<p><a href="http://api.jquery.com/unwrap/"><font color="#9f8248">更多关于 <code>.unwrap(&hellip;)</code></font></a> </p>
<h3>10. detach() vs remove()</h3>
<p>新的&quot;.detach()&rdquo;方法允许你从DOM中移掉元素，这跟&quot;.remove()&rdquo;很像。但与&quot;.remove()&rdquo;有本质不同的是&quot;detach()&rdquo;不会将jQuery赋给该元素的数据也给注销掉。这包含通过&quot;.data()&rdquo;和其他任意的通过jQuery的事件系统添加的事件等数据。 </p>
<p>如果你想从DOM中移除某个元素，但你又可能需要在后面的某个时候把该元素重新添加到DOM中的时候这个函数将会很有用，这时候该元素的事件和其他的数据都会被保留下来。</p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000"> foo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">#foo</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 绑定一个重要的事件</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">foo.click(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){<br />    alert(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Foo!</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br />});<br />foo.detach(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 从 DOM中移除事件</span><span style="COLOR: #008000"><br />//</span><span style="COLOR: #008000"> &hellip; 其他操作</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">foo.appendTo(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 将元素重新加入到 DOM</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">foo.click(); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 弹出 &quot;Foo!&quot;</span></div>
</pre>
</div>
<p><a href="http://api.jquery.com/detach"><font color="#9f8248">更多 <code>.detach(&hellip;)</code></font></a> </p>
<h3>11. index(&hellip;) 加强</h3>
<p>jQuery 1.4中我们有两种使用&quot;.index()&rdquo;方法的方式。首先，你可以仅仅将一个元素自身作为参数，这样你可以得到该元素在当前集合中所处的索引位置值。 </p>
<p>如果不设置参数的话，现在会返回该元素的兄弟节点。因此，假设有下面的DOM结构： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ul</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /> </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">苹果</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /> </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">香蕉</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /> </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">葡萄</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /> </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">草莓</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /> </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">例子</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /> </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">桃子</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">li</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /> </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ul</span><span style="COLOR: #0000ff">&gt;</span></div>
</pre>
</div>
<p>当一个节点被点击的时候，你如果想找到在所有的节点集合中被单击的节点的位置，你可以这样写： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery('li').click(function(){<br />    alert( jQuery(this).index() );<br />});</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>jQuery 1.4还允许你指定一个选择器作为&quot;.index()&rdquo;的第一个参数，这样它会返回该元素在选择器中产生的元素集合中的位置。 </p>
<p>最后需要注意的是，如果该元素在集合中存在的话，该函数会返回一个其位置的整数，如果不存在，则返回-1。 </p>
<p><a href="http://api.jquery.com/index"><font color="#9f8248">更多关于 <code>.index(&hellip;)</code></font></a> </p>
<h3>12. DOM 操作的方法支持回调函数</h3>
<p>大部分对DOM进行操作的函数现在都支持传递函数作为唯一参数了(如果是&quot;.css()&rdquo;和&quot;.attr()&rdquo;的情况的话，它会作为第二参数)。该函数会在集合中的每个元素上都执行一次，从而确定哪些应作为该函数的实际值提供给回调函数调用。 </p>
<p>下面给出所有支持该功能的函数列表: </p>
<ul>
    <li><a href="http://api.jquery.com/after"><font color="#9f8248">after</font></a> </li>
    <li><a href="http://api.jquery.com/before"><font color="#9f8248">before</font></a> </li>
    <li><a href="http://api.jquery.com/append"><font color="#9f8248">append</font></a> </li>
    <li><a href="http://api.jquery.com/prepend"><font color="#9f8248">prepend</font></a> </li>
    <li><a href="http://api.jquery.com/addClass"><font color="#9f8248">addClass</font></a> </li>
    <li><a href="http://api.jquery.com/toggleClass"><font color="#9f8248">toggleClass</font></a> </li>
    <li><a href="http://api.jquery.com/removeClass"><font color="#9f8248">removeClass</font></a> </li>
    <li><a href="http://api.jquery.com/wrap"><font color="#9f8248">wrap</font></a> </li>
    <li><a href="http://api.jquery.com/wrapAll"><font color="#9f8248">wrapAll</font></a> </li>
    <li><a href="http://api.jquery.com/wrapInner"><font color="#9f8248">wrapInner</font></a> </li>
    <li><a href="http://api.jquery.com/val"><font color="#9f8248">val</font></a> </li>
    <li><a href="http://api.jquery.com/text"><font color="#9f8248">text</font></a> </li>
    <li><a href="http://api.jquery.com/replaceWith"><font color="#9f8248">replaceWith</font></a> </li>
    <li><a href="http://api.jquery.com/css"><font color="#9f8248">css</font></a> </li>
    <li><a href="http://api.jquery.com/attr"><font color="#9f8248">attr</font></a> </li>
    <li><a href="http://api.jquery.com/html"><font color="#9f8248">html</font></a> </li>
</ul>
<p>通过回调函数，你可以通过&quot;this&rdquo;访问数组中的当前元素，还可以通过第一个参数得到它在数组中的位置。 </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).html(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(i){<br />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">该列表中的索引位置: </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> i;<br />});</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>同样，你也可以通过上面的某些方法得到另外一个参数，如果你调用一个setter方法(如&quot;.html()&rdquo;或&quot;.attr(&lsquo;href&rsquo;)&quot;)你就可以直接访问当前的值了。如： </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).attr(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">href</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(i, currentHref){<br />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> currentHref </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">?foo=bar</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br />}); </span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>正如上面看到的，在使用&quot;<code>.css()</code>&quot; 和 &quot;<code>.attr()</code>&quot; 方法时，因为第一个参数需要被用作指定那些你需要设置或改变的属性名，你需要将回调函数作为第二参数。 </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">).css(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">color</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(i, currentCssColor){<br />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">%</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">?</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">red</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> : </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">blue</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br />});</span></div>
</pre>
</div>
<p>&nbsp;</p>
<h3>13. 对象类型判断</h3>
<p>jQuery 1.4添加了两个新的方法(直接放到了jQuery命名空间下面)以方便我们来判断当前处理的对象的类型。 </p>
<p>首先是方法&quot;isEmptyObject&rdquo;，顾名思义，这个函数会返回一个布尔值来表明传递的对象是不是空对象(缺乏属性--无论是对象自身还是继续的对象)。其次是方法&quot;isPlainObject&rdquo;，它会返回一个布尔值来表明操作的对象是否是一个简单的js对象(指通过&quot;{ }&quot;或者&quot;new Object&rdquo;创建的对象)。 </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery.isEmptyObject({}); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> true</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">jQuery.isEmptyObject({foo:</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">}); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> false</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">jQuery.isPlainObject({}); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> true</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">jQuery.isPlainObject(window); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> false </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">jQuery.isPlainObject(jQuery()); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> false</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>更多关于: <a href="http://api.jquery.com/jQuery.isPlainObject"><code><font color="#9f8248">isPlainObject(&hellip;)</font></code></a>, <a href="http://api.jquery.com/jQuery.isEmptyObject"><code><font color="#9f8248">isEmptyObject(&hellip;)</font></code></a></p>
<h3>14. Closest(&hellip;) 增强</h3>
<p>jQuery的&quot;.closest()&rdquo;方法现在可以接受一组选择器了。如果开发人员想遍历一个元素的祖先，并在其中查找离其最近的那些符合某些特征的节点的时候，这会很有用。 </p>
<p>另外，该函数现在也接受将上下文作为第二参数了。这意味着你现在可以控制你想在DOM中遍历的元素范围了。虽然这两种情况我们一般很少用到，不过它们在jQuery内部被很好的使用。 </p>
<p><a href="http://api.jquery.com/closest"><font color="#9f8248">更多关于 <code>.closest(&hellip;)</code></font></a> </p>
<h3>15. 新的事件! focusIn 和focusOut</h3>
<p>上文已经提到，为了委托&quot;focus&rdquo;和&quot;blur&rdquo;事件你需要这些新的事件，它们是&quot;focusin&rdquo;和&quot;focusout&rdquo;。这些新的事件将允许你在一个元素或其子元素获取焦点的时候进行相应操作。 </p>
<div class="cnblogs_code">
<pre>
<div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="COLOR: #000000">jQuery(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">form</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br />    .focusin(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){<br />        jQuery(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).addClass(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">focused</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br />    });<br />    .focusout(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(){<br />        jQuery(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).removeClass(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">focused</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br />    });</span></div>
</pre>
</div>
<p>&nbsp;</p>
<p>同时应该注意的是这两个事件都不是按冒泡顺序传递，它们将按捕获顺序触发。这意味着最外层的(也即祖先)元素会在实际节点事件触发前被触发。</p>
<p>更多关于 <a href="http://api.jquery.com/focusin"><code><font color="#9f8248">focusIn</font></code></a> 和 <a href="http://api.jquery.com/focusout"><code><font color="#9f8248">focusOut</font></code></a> 事件。 </p>
<p><b>大家开始玩转jQuery 1.4吧。它是目前jQuery发布的一个最有前瞻性，最多特性支持和表现最好的一个版本！</b></p>
<p>好了，本文就到这里了。我已经开始准备跟随这个改变了，我相信这些改变同样会让你印象深刻的！ </p>
<p>如果你还没准备好，你可以看看 &quot;<b><a href="http://jquery14.com/"><font color="#9f8248">jQuery14天</font></a></b>&quot;, 一个专门为jQuery 1.4为做的在线站点，对了，另外还是为了庆祝jQeury的四岁生日！ </p>
<p>最后不要忘了去阅读 <a href="http://api.jquery.com/"><b><font color="#9f8248">API 文档</font></b></a><b>&nbsp;</b>!</p>
<div id="MySignature">&nbsp;</div>]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=417</link>
			<title><![CDATA[判断是否在对象的范围内]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Fri,15 Jan 2010 18:37:05 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=417</guid>	
		<description><![CDATA[//判断是否在对象的范围内<br/>function&nbsp;isInObjInner(objID,paddingPX){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;event.clientX;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;event.clientY;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;divx1&nbsp;=&nbsp;$(&#34;#&#34;+objID).offset().left;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;divy1&nbsp;=&nbsp;$(&#34;#&#34;+objID).offset().top;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;divx2&nbsp;=&nbsp;divx1&nbsp;+&nbsp;$(&#34;#&#34;+objID).width();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;divy2&nbsp;=&nbsp;divy1&nbsp;+&nbsp;$(&#34;#&#34;+objID).height();&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;document.title=&#34;x:&#34;+x+&#34;|y:&#34;+y+&#34;|x1:&#34;+divx1+&#34;|x2:&#34;+divx2+&#34;|y1:&#34;+divy1+&#34;|y2:&#34;+divy2;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;x&nbsp;&lt;&nbsp;divx1-paddingPX&nbsp;||&nbsp;x&nbsp;&gt;&nbsp;divx2+paddingPX||&nbsp;y&nbsp;&lt;&nbsp;divy1-paddingPX&nbsp;||&nbsp;y&nbsp;&gt;&nbsp;divy2+paddingPX)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=416</link>
			<title><![CDATA[sql xml操作]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Fri,11 Dec 2009 14:42:36 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=416</guid>	
		<description><![CDATA[sql&nbsp;xml字段操作实例：<br/><br/>向xml字段的某个节点中新增节点&nbsp;<br/><br/>up&#100;ate&nbsp;BusinessStatisticsT&nbsp;set&nbsp;bidderinfo.modify(N&#39;<br/>ins&#101;rt<br/>&nbsp;&nbsp;&nbsp;&lt;Orders&nbsp;o&#114;derID=&#34;1&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;SrmUserID&gt;srm的ID&lt;/SrmUserID&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;SrmUserName&gt;Srm的用户名称&lt;/SrmUserName&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;SrmRealName&gt;Srm的真实名称&lt;/SrmRealName&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;BidderUserID&gt;接包方用户ID&lt;/BidderUserID&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;BidderName&gt;接包方用户名称&lt;/BidderName&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;BidderUserName&gt;接包方真实姓名&lt;/BidderUserName&gt;<br/>&nbsp;&nbsp;&lt;/Orders&gt;&nbsp;<br/>into&nbsp;(/BidderInfo)[last()]&#39;)&nbsp;wh&#101;re&nbsp;businessid=1003]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=415</link>
			<title><![CDATA[获取asp.net ajax序列化后的时间]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Mon,30 Nov 2009 13:08:36 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=415</guid>	
		<description><![CDATA[.net&nbsp;ajax序列化后为json，如果用其他的方式获取时间（非自带的ajax脚本框架），可能不容易获取到，这边有个通用的函数可参考：<br/><br/><br/>//获取时间<br/>function&nbsp;getDate(dateValue)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;d=eval(&#39;new&nbsp;&#39;&nbsp;+&nbsp;dateValue.replace(&#39;/&#39;,&#39;&#39;,&#39;g&#39;).replace(&#39;/&#39;,&#39;&#39;,&#39;g&#39;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;d;<br/>}<br/><br/>示例：<br/>&nbsp;$(&#34;#txtWantFinishTime&#34;).val(getDate(bizInfo.WantFinishTime).format(&#34;yyyy-MM-dd&nbsp;HH:mm&#34;));]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=414</link>
			<title><![CDATA[formValidator 的bug修改]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Fri,27 Nov 2009 15:27:27 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=414</guid>	
		<description><![CDATA[将formValidator的初始化参数的onshow设置为空后，验证会失效，解决办法找到代码：157行左右，增加一句tip.show();<br/>前后的代码为：<br/>if(showmsg==null&nbsp;||&nbsp;showmsg==&#34;&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tip.hide();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tip.show();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(initConfig.tidymode)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//显示和保存提示信息<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$(&#34;#fv_content&#34;).html(showmsg);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;elem.Tooltip&nbsp;=&nbsp;showmsg;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(showclass!=&#34;onError&#34;){tip.hide();}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=412</link>
			<title><![CDATA[.net操作office示例]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Wed,04 Nov 2009 10:36:47 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=412</guid>	
		<description><![CDATA[<p>上班时间，写着写着代码，想还是应该把前几天做的.net操作office的demo上传上来，当着个备份也好。</p>
<p>.net 的office操作使用的地方还是蛮多的，不过有时候也比较麻烦，前几天正好比较没事，就学习了下Aspose这套组件的用法，顺便做了个简单的操作excel的demo，主要的点还是在读取excel中的图片，并将该图片在哪个单元格中识别出来。</p>
<p>废话不宜太多，上代码先：</p>
<p>private void ReadExcelData()<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;string filePath = Server.MapPath(@&quot;test.xls&quot;);</p>
<p>&nbsp;&nbsp;&nbsp;if (!File.Exists(filePath))<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(&quot;不存在测试文件:test.xls&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Response.End();<br />&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;Workbook wb = new Workbook();<br />&nbsp;&nbsp;&nbsp;wb.Open(filePath);</p>
<p><br />&nbsp;&nbsp;&nbsp;if (wb.Worksheets.Count &gt; 0)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;Worksheet ws = wb.Worksheets[0];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;System.Data.DataTable dt = new System.Data.DataTable();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0 ; i &lt; ws.Cells.Columns.Count ; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Columns.Add(i.ToString());<br />&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Pictures pics = ws.Pictures;<br />&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Picture&gt; lstPic = new List&lt;Picture&gt;();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;for (int k = 0 ; k &lt; pics.Count ; k++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lstPic.Add(pics[k]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0 ; i &lt; ws.Cells.Rows.Count ; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;string&gt; lstRow = new List&lt;string&gt;();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int j = 0 ; j &lt; ws.Cells.Columns.Count ; j++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lstRow.Add(ws.Cells[i , j].StringValue);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Picture&gt; lstP = lstPic.Where(o =&gt; o.UpperLeftRow == i &amp;&amp; o.UpperLeftColumn == j).ToList();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int k = 0 ; k &lt; lstP.Count ; k++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Drawing.Image img = System.Drawing.Image.FromStream(new MemoryStream(lstP[k].Data));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img.Save(string.Format(&quot;{0}\\{1}_{2}_{3}.jpg&quot; , &quot;E:\\Project\\ExcelPicDemo\\ExcelPicDemo\\Img&quot; , i.ToString() , j.ToString() , k.ToString()));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img.Dispose();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lstRow[j] = lstRow[k].ToString() + string.Format(&quot;&nbsp;&nbsp;&nbsp; {0}/{1}_{2}_{3}.jpg&nbsp;&nbsp;&nbsp; &quot; , &quot;Img&quot; , i.ToString() , j.ToString() , k.ToString());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.Rows.Add(lstRow.ToArray());<br />&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;this.gdvList.DataSource = dt;<br />&nbsp;&nbsp;&nbsp;&nbsp;this.gdvList.DataBind();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(&quot;文档中不存在任何工作表。&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Response.End();<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>重点是靠图片的UpperLeftRow ,UpperLeftColumn 这两个属性来判定它属于哪个单元格了。其他的没啥好说的。</p>
<p>最后上demo完整代码，和aspose破解组件。</p>
<p><a href="http://www.fenglog.com/blog/attachments/month_0911/h2009114103537.zip"><img style="MARGIN: 0px 2px -4px 0px" border="0" alt="" src="http://www.fenglog.com/blog/images/download.gif" />Demo下载</a>&nbsp; <a href="http://www.fenglog.com/blog/attachments/month_0911/v2009114103450.rar"><img style="MARGIN: 0px 2px -4px 0px" border="0" alt="" src="http://www.fenglog.com/blog/images/download.gif" />Aspose组件破解下载</a></p>]]></description>
		</item>
		
			<item>
			<link>http://www.fenglog.com/blog/default.asp?id=411</link>
			<title><![CDATA[错误: 80070005]]></title>
			<author>lucklier@163.com(随风)</author>
			<category><![CDATA[技术楼阁]]></category>
			<pubDate>Mon,26 Oct 2009 14:47:03 +0800</pubDate>
			<guid>http://www.fenglog.com/blog/default.asp?id=411</guid>	
		<description><![CDATA[检索&nbsp;COM&nbsp;类工厂中&nbsp;CLSID&nbsp;为{00024500-0000-0000-C000-000000000046}&nbsp;的组件时失败，原因是出现以下错误:&nbsp;80070005。&nbsp;具体解决方法如下:&nbsp;1:在服务器上安装office的Excel软件.&nbsp;2:在&#34;开始&#34;-&gt;&#34;运行&#34;中输入dcomcnfg.exe启动&#34;组件服务&#34;&nbsp;3:依次双击&#34;组件服务&#34;-&gt;&#34;计算机&#34;-&gt;&#34;我的电脑&#34;-&gt;&#34;DCOM配置&#34;&nbsp;4:在&#34;DCOM配置&#34;中找到&#34;Microsoft&nbsp;Excel&nbsp;应用程序&#34;,在它上面点击右键,然后点击&#34;属性&#34;,弹出&#34;Microsoft&nbsp;Excel&nbsp;应&nbsp;用程序属性&#34;对话框&nbsp;5:点击&#34;标识&#34;标签,选择&#34;交互式用户&#34;&nbsp;6:点击&#34;安全&#34;标签,在&#34;启动和激活权限&#34;上点击&#34;自定义&#34;,然后点击对应的&#34;编辑&#34;按钮,在弹出的&#34;安全性&#34;对话框中填加&nbsp;一个&#34;NETWORK&nbsp;SERVICE&#34;用户(注意要选择本计算机名),并给它赋予&#34;本地启动&#34;和&#34;本地激活&#34;权限.&nbsp;7:依然是&#34;安全&#34;标签,在&#34;访问权限&#34;上点击&#34;自定义&#34;,然后点击&#34;编辑&#34;,在弹出的&#34;安全性&#34;对话框中也填加一个&#34;NETWORK&nbsp;SERVICE&#34;用户,然后赋予&#34;本地访问&#34;权限.&nbsp;这样,我们便配置好了相应的Excel的DCOM权限.&nbsp;注意:这是在WIN2003上配置的,在2000上,可能是配置ASPNET用户&nbsp;由于EXCEL是在服务器上打开的，所以应该写一个把导出数据保存在服务器上,然后再传递给客户端的方法,最后每次调&nbsp;用这个功能的时候再删除以前在服务器上所生成的所有Excel&nbsp;]]></description>
		</item>
		
</channel>
</rss>