<?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>Kily&#039;s Blog &#187; web前端关注</title>
	<atom:link href="http://www.keelii.com/category/webfrontattention/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.keelii.com</link>
	<description>calls me kily</description>
	<lastBuildDate>Fri, 03 Feb 2012 08:22:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>前端开发利器vim</title>
		<link>http://www.keelii.com/perfect-editor-vim/</link>
		<comments>http://www.keelii.com/perfect-editor-vim/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 11:01:21 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[网页制作相关]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.keelii.com/perfect-editor-vim/</guid>
		<description><![CDATA[老早就听大湿们说vim是真正的程序员用的编辑器，我也是经过无数次的“使用-放弃-使用-放弃”之后，最终选择了vim这个神器。综合起来我用到的vim功能并且觉得好用的有以下几条： &#160; 1. 界面美观、轻巧、系统资源损耗小 2. 跨平台，Windows下的Gvim , Linux下的vi , Mac下的mac vim 3. 主题风格超级多（http://code.google.com/p/vimcolorschemetest/），我用monokai , 很经典、很酷 4. 代码自动补全+zencoding可以说是完美了 不幸的是vim的可定制性太高，很多参数设置都是需要手动配置的。而且Windows下用vim会出现一些问题，多数是因为用户不会配置.vimrc文件，一个设置就可能让你放弃vim。比如： 1. vim字体不好看 2. vim文件格式 3. vim的三种模式：命令、可视、插入 4. vim快捷键设置。 5. 。。。 很多新手可能会因为这些问题放弃使用vim。我建议先看看善用佳软博客的我这样使用VIM。 不过我有一个自己觉得好用的版本，是依照我个人习惯设置过来的。放出个压缩包给大家，大家可以参考下。使用方法如下： 1. 先下载gvim7.2的版本安装，点这里 2. 解压的我包到vim安装目录 3. 安装YaHei.Consolas字体（强烈建议安装） 我用的vim7.2：下载地址 YaHei.Consolas字体：下载地址 更新：adam的VIM视频教程很强大，强烈建议学习研究。地址： http://bbs.yuyadong.com/read.php?tid=3930]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border-width: 0px;" title="vim" src="http://www.keelii.com/wp-content/uploads/2011/06/vim.jpg" border="0" alt="vim" width="504" height="204" /></p>
<p>老早就听大湿们说vim是真正的程序员用的编辑器，我也是经过无数次的“使用-放弃-使用-放弃”之后，最终选择了vim这个神器。综合起来我用到的vim功能并且觉得好用的有以下几条：</p>
<p><span id="more-1683"></span></p>
<p>&nbsp;</p>
<ul>
<li>1. 界面美观、轻巧、系统资源损耗小</li>
<li>2. 跨平台，Windows下的Gvim , Linux下的vi , Mac下的mac vim</li>
<li>3. 主题风格超级多（<a title="http://code.google.com/p/vimcolorschemetest/" href="http://code.google.com/p/vimcolorschemetest/">http://code.google.com/p/vimcolorschemetest/</a>），我用monokai , 很经典、很酷</li>
<li>4. 代码自动补全+zencoding可以说是完美了</li>
</ul>
<p><a href="http://www.keelii.com/wp-content/uploads/2011/06/277705626.png"><img style="display: inline; border-width: 0px;" title="点击查看大图" src="http://www.keelii.com/wp-content/uploads/2011/06/277705626_thumb.png" border="0" alt="点击查看大图" width="244" height="146" /></a></p>
<p>不幸的是vim的可定制性太高，很多参数设置都是需要手动配置的。而且Windows下用vim会出现一些问题，多数是因为用户不会配置.vimrc文件，一个设置就可能让你放弃vim。比如：</p>
<ul>
<li>1. vim字体不好看</li>
<li>2. vim文件格式</li>
<li>3. vim的三种模式：命令、可视、插入</li>
<li>4. vim快捷键设置。</li>
<li>5. 。。。</li>
</ul>
<p>很多新手可能会因为这些问题放弃使用vim。我建议先看看<strong>善用佳软</strong>博客的<a href="http://xbeta.info/my-gvim.htm" target="_blank">我这样使用VIM</a>。</p>
<p>不过我有一个自己觉得好用的版本，是依照我个人习惯设置过来的。放出个压缩包给大家，大家可以参考下。使用方法如下：</p>
<ul>
<li>1. 先下载gvim7.2的版本安装，<a href="http://dl.pconline.com.cn/html_2/1/117/id=39977&amp;pn=0.html" target="_blank">点这里</a></li>
<li>2. 解压的我包到vim安装目录</li>
<li>3. 安装YaHei.Consolas字体（强烈建议安装）</li>
</ul>
<p>我用的vim7.2：<a href="http://dl.dbank.com/c0mqmuphlj" target="_blank">下载地址</a></p>
<p>YaHei.Consolas字体：<a href="http://dl.dbank.com/c0yklp0wrd" target="_blank">下载地址</a></p>
<p>更新：adam的VIM<span style="color: #ff0000;"><strong>视频教程</strong></span>很强大，强烈建议学习研究。地址：</p>
<p><a href="http://bbs.yuyadong.com/read.php?tid=3930" target="_blank">http://bbs.yuyadong.com/read.php?tid=3930</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/perfect-editor-vim/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>CSS类名class用下划线&#8221;_&#8221;还是减号&#8221;-&#8221;</title>
		<link>http://www.keelii.com/css-class-naming-method/</link>
		<comments>http://www.keelii.com/css-class-naming-method/#comments</comments>
		<pubDate>Sat, 07 May 2011 06:23:18 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[CSS相关]]></category>
		<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://www.keelii.com/css-class-naming-method/</guid>
		<description><![CDATA[其实这个问题早先已经有人讨论过了，但是没有定论。一个人写代码的时候爱咋样咋样，但量在团队合作的时候就会出现问题，一般来说都会制定相应的标准来保证代码风格的一致性。 关于CSS类名的命名方式大致有三种： 1. 下划线，即：class=”main_nav” 2. 减　号，即：class=”main-nav” 3. 驼峰式，即：class=”mainNav” 三种方法各有利利弊，我大概总结了下面几点： 1.下划线 优点：和程序兼容性好，因为所有程序语言里的变量命名都可以用下划线。 缺点：生硬难看，多余一个字符。 2.减号 优点：与CSS代码原生匹配，比如：text-align:center; 视觉上有一致性，也很美观。 缺点：用减号分割的字符一般的文本编辑器会认为它是两个字符，从而影响“双击选中”操作，另外在程序里减号是变量的运算符，可能会造程序书写困难。 3.驼峰式 优点：符合编程语言命名规范，节省1个字节 缺点：XHTML规定都是小写，用某些代码整理工具可能会误把类名全部转化成小写 大家如果觉得有什么要补充的可以讨论下，个人还是喜欢减号多一点。因为比较原生嘛！]]></description>
			<content:encoded><![CDATA[<p>其实这个问题早先已经有人讨论过了，但是没有定论。一个人写代码的时候爱咋样咋样，但量在团队合作的时候就会出现问题，一般来说都会制定相应的标准来保证代码风格的一致性。</p>
<p>关于CSS类名的命名方式大致有三种：</p>
<ul>
<li>1. 下划线，即：class=”main_nav”</li>
<li>2. 减　号，即：class=”main-nav”</li>
<li>3. 驼峰式，即：class=”mainNav”</li>
</ul>
<p>三种方法各有利利弊，我大概总结了下面几点：</p>
<h2>1.下划线</h2>
<p><strong>优点：</strong>和程序兼容性好，因为所有程序语言里的变量命名都可以用下划线。</p>
<p><strong>缺点：</strong>生硬难看，多余一个字符。</p>
<h2>2.减号</h2>
<p><strong>优点：</strong>与CSS代码原生匹配，比如：text-align:center; 视觉上有一致性，也很美观。</p>
<p><strong>缺点：</strong>用减号分割的字符一般的文本编辑器会认为它是两个字符，从而影响“双击选中”操作，另外在程序里减号是变量的运算符，可能会造程序书写困难。</p>
<h2>3.驼峰式</h2>
<p><strong>优点：</strong>符合编程语言命名规范，节省1个字节</p>
<p><strong>缺点：</strong>XHTML规定都是小写，<del>用某些代码整理工具可能会误把类名全部转化成小写</del></p>
<p>大家如果觉得有什么要补充的可以讨论下，个人还是喜欢减号多一点。因为比较原生嘛！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/css-class-naming-method/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>招聘前端开发工程师（帮忙）</title>
		<link>http://www.keelii.com/job-opportunity/</link>
		<comments>http://www.keelii.com/job-opportunity/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 08:18:58 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[招聘]]></category>

		<guid isPermaLink="false">http://www.keelii.com/job-opportunity/</guid>
		<description><![CDATA[好吧！沉默了一阵子的总算能有机会写写博客了，最近也是为了工作的事情忙里忙外。现在帮朋友发一则招聘信息。是我特别想去但没有去了的一次机会，如果有意应聘的同学们可抓紧哦。 具体要求如下（http://www.douguo.com/hr.html）： 职位名称：前端开发工程师 招聘人数：1名 岗位职责： &#160; 1. 负责豆果网web产品的前端开发及维护工作； &#160; 2. 负责web产品前端相关技术的规范标准。 任职条件： &#160; 1. 热爱前端开发、喜欢钻研各类互联网应用； &#160; 2. 2年以上前端开发经验，熟悉web标准化，性能优化方法，有成功案例； &#160; 3. 熟悉CSS，JS框架，有较强的学习能力； &#160; 4. 熟悉PHP/Actionscript优先。 多说一句，如果你是迫于生计想找一份工作那么这工作未必适合，如果你对前端充满激情并渴望有一片能挥洒自己青春的地方，那么这份工作将非常适合你。 关于豆果你还可以看看以下信息了解更多 http://fairyfish.net/2011/03/22/douguo/ http://tech.qq.com/a/20110304/000171.htm 联系方式： 直接发送简历到：hr@douguo.com 或者联系我：keeliizhou@gmail.com]]></description>
			<content:encoded><![CDATA[<p>好吧！沉默了一阵子的总算能有机会写写博客了，最近也是为了工作的事情忙里忙外。现在帮朋友发一则招聘信息。是我特别想去但没有去了的一次机会，如果有意应聘的同学们可抓紧哦。 </p>
<p><span id="more-1676"></span>
</p>
<p>具体要求如下（<a href="http://www.douguo.com/hr.html）：">http://www.douguo.com/hr.html</a>）：</p>
<p><strong>职位名称</strong>：前端开发工程师     <br /><strong>招聘人数</strong>：1名     <br /><strong>岗位职责</strong>： </p>
<p>&#160; 1. 负责豆果网web产品的前端开发及维护工作；    <br />&#160; 2. 负责web产品前端相关技术的规范标准。 </p>
<p><strong>任职条件</strong>： </p>
<p>&#160; 1. 热爱前端开发、喜欢钻研各类互联网应用；    <br />&#160; 2. 2年以上前端开发经验，熟悉web标准化，性能优化方法，有成功案例；     <br />&#160; 3. 熟悉CSS，JS框架，有较强的学习能力；     <br />&#160; 4. 熟悉PHP/Actionscript优先。     </p>
<p>多说一句，如果你是迫于生计想找一份工作那么这工作未必适合，如果你对前端充满激情并渴望有一片能挥洒自己青春的地方，那么这份工作将非常适合你。 </p>
<p>关于豆果你还可以看看以下信息了解更多 </p>
<p><a href="http://fairyfish.net/2011/03/22/douguo/">http://fairyfish.net/2011/03/22/douguo/</a>     <br /><a href="http://tech.qq.com/a/20110304/000171.htm">http://tech.qq.com/a/20110304/000171.htm</a></p>
<p>联系方式：    <br />直接发送简历到：hr@douguo.com     <br />或者联系我：keeliizhou@gmail.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/job-opportunity/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Eclipse中用SVN简单部署你的项目</title>
		<link>http://www.keelii.com/build-project-in-eclipse-with-svn/</link>
		<comments>http://www.keelii.com/build-project-in-eclipse-with-svn/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 08:33:34 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.keelii.com/build-project-in-eclipse-with-svn/</guid>
		<description><![CDATA[在实际的项目开发总会遇到一些问题，比如多人协作coding的时候更新版本不统一。简单说就是： 当你在修改代码的时间可能其它人也在修改，为了避免更新版本时出现混乱，我们会用到SVN也是是版本管理。 理论知识：SVN ，subversion 神马SVN服务器，客户端的就不多说了，自己去查，我主要给大家说说如何在Eclipse中用SVN。 一、SVN服务器 我们可以选择GoogleCode提供的。当然前提是你知道Open Source的意思，也就是说项目的源代码是以你选择的某种开源协议放在Google服务器上的。不放心的可以自己在本地搭建SVN服务器，建议新手用这个VisualSVN(即有图形界面的SVN服务器端) 1.打开http://code.google.com/hosting/createProject按自己的需要创建一个项目，不过要记住在Version control system里面选择Subversion就行。 2.创建完成后点击导航栏上面的“Source”项目，这里Google会给出项目提交的SVN库(repo)地址，比如我的是：https://kily-wordpress-theme.googlecode.com/svn/trunk/。点击下面的google.com password进入设置界面，记下Google自动为你生成的SVN链接密码。 二、SVN客户端 这一步我们不需要自己建客户端，因为我们要用Eclipse的一个插件，其实也算是SVN客户端，唠叨了？囧~如果你没有Eclipse的话也可以试试这个SVN客户端：Tortoisesvn 1.在Eclipse中点击“帮助-添加一个新插件”（help-install new software）输入Eclipse插件subeclipse的更新地址：http://subclipse.tigris.org/update_1.6.x安装完成后重启Eclipse。 2.在Eclipse中调出SVN视图：window - show view – other – SVN - SVN资源库。右键新建一个SVN资源库。URL填第二步中Google给的地址。下一步直到完成。 3.在Eclipse的项目视图中右键一个项目-Team – ShareProject - SVN一路下一步。不过别忘写初始导入的注释。 4.提交(commit)你的项目并加上注释，右键项目-team-提交(commin)即可。提示你输入用户名时就填你Google账号地址比如：keeliizhou@gmail.com密码用第二步Google为你自动生成的登陆。好了你的项目已经在Google的服务器上了。接下来就试着更新下版本吧。 三、使用版本更新及对比 改动项目里面任何一个文件的源代码。比如多加一行。保存后commit到SVN服务器并写下改动注释。 右键那个文件compareWith - 与分支/标记进行比较。选择以前的那个版本确定。你就能很清晰的发现两个版本之间的异同了！]]></description>
			<content:encoded><![CDATA[<p>在实际的项目开发总会遇到一些问题，比如多人协作coding的时候更新版本不统一。简单说就是：</p>
<p>当你在修改代码的时间可能其它人也在修改，为了避免更新版本时出现混乱，我们会用到SVN也是是版本管理。</p>
<p>理论知识：<a title="百那个度一下SVN，你就晓得！" href="http://baike.baidu.com/view/183128.htm" target="_blank">SVN</a> ，<a title="SVN的缩写" href="http://baike.baidu.com/view/429581.htm" target="_blank">subversion</a></p>
<p>神马SVN服务器，客户端的就不多说了，自己去查，我主要给大家说说如何在Eclipse中用SVN。</p>
<p>  <span id="more-1664"></span><br />
<h3>一、SVN服务器</h3>
<p>我们可以选择GoogleCode提供的。当然前提是你知道Open Source的意思，也就是说项目的源代码是以你选择的某种开源协议放在Google服务器上的。不放心的可以自己在本地搭建SVN服务器，建议新手用这个<a title="Windows下的非免费SVN服务器" href="http://www.onlinedown.net/soft/89603.htm" target="_blank">VisualSVN</a>(即有图形界面的SVN服务器端)</p>
<p>1.打开<a title="http://code.google.com/hosting/createProject" href="http://code.google.com/hosting/createProject">http://code.google.com/hosting/createProject</a>按自己的需要创建一个项目，不过要记住在Version control system里面选择Subversion就行。</p>
<p>2.创建完成后点击导航栏上面的“Source”项目，这里Google会给出项目提交的SVN库(repo)地址，比如我的是：<tt><a href="https://kily-wordpress-theme.googlecode.com/svn/trunk/">https://kily-wordpress-theme.googlecode.com/svn/trunk/</a>。点击下面的google.com password进入设置界面，记下Google自动为你生成的SVN链接密码。</tt></p>
<h3><tt>二、SVN客户端</tt></h3>
<p><tt>这一步我们不需要自己建客户端，因为我们要用Eclipse的一个插件，其实也算是SVN客户端，唠叨了？囧~如果你没有Eclipse的话也可以试试这个SVN客户端：<a title="免费的SVN客户端" href="http://tortoisesvn.tigris.org/" target="_blank">Tortoisesvn</a></tt></p>
<p><tt>1.在Eclipse中点击“帮助-添加一个新插件”（help-install new software）输入Eclipse插件<a title="相当于SVN客户端" href="http://subclipse.tigris.org/" target="_blank">subeclipse</a>的更新地址：<a href="http://subclipse.tigris.org/update_1.6.x">http://subclipse.tigris.org/update_1.6.x</a>安装完成后重启Eclipse。</tt></p>
<p><tt>2.在Eclipse中调出SVN视图：window - show view – other – SVN - SVN资源库。右键新建一个SVN资源库。URL填第二步中Google给的地址。下一步直到完成。</tt></p>
<p><tt>3.在Eclipse的项目视图中右键一个项目-Team – ShareProject - SVN一路下一步。不过别忘写初始导入的注释。</tt></p>
<p><tt>4.提交(commit)你的项目并加上注释，右键项目-team-提交(commin)即可。提示你输入用户名时就填你Google账号地址比如：<a href="mailto:keeliizhou@gmail.com">keeliizhou@gmail.com</a>密码用第二步Google为你自动生成的登陆。好了你的项目已经在Google的服务器上了。接下来就试着更新下版本吧。</tt></p>
<h3><tt>三、使用版本更新及对比</tt></h3>
<p><tt>改动项目里面任何一个文件的源代码。比如多加一行。保存后commit到SVN服务器并写下改动注释。</tt></p>
<p><tt>右键那个文件compareWith - 与分支/标记进行比较。选择以前的那个版本确定。你就能很清晰的发现两个版本之间的异同了！</tt></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/build-project-in-eclipse-with-svn/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>分享一段可定制的分享代码</title>
		<link>http://www.keelii.com/share-sharecode/</link>
		<comments>http://www.keelii.com/share-sharecode/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 10:00:18 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[网页制作相关]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[分享代码]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=1640</guid>
		<description><![CDATA[最近在给公司做网站的时候需要给产品页加上分享到微博的代码，本来用addthis的代码，但可定制性太差。于是就自己上网搜索了下总结出一个感觉还不错的代码。效果类似于文章下面的“收藏&#38;分享”。 如果觉得不够的话自己去搜索链接代码，图标用的是eicodesign发布的免费图标哦。 用法： 1.复制下面的HTML代码到你的HTML文件中(最好下载，免得替换符号)： &#60;div id="ak_share"&#62; &#60;dl&#62; &#60;dt&#62;分享：&#60;/dt&#62; &#60;dd&#62; &#60;a href="javascript:(function(){window.open('http://v.t.sina.com.cn/share/share.php?title='+encodeURIComponent(document.title)+'&#38;url='+encodeURIComponent(location.href)+'&#38;source=bookmark','_blank','width=450,height=400');})()" title="分享到新浪微博" rel="nofollow"&#62;新浪微博&#60;/a&#62; &#60;/dd&#62; &#60;dd&#62; &#60;a href="javascript:(function(){window.open('http://t.163.com/article/user /checkLogin.do?link=http://news.163.com/&#38;source=' + '&#38;info='+encodeURIComponent(document.title)+' '+encodeURIComponent(location.href),'_blank','width=510,height=300');})()" title="分享到网易微博" rel="nofollow"&#62;网易微博&#60;/a&#62; &#60;/dd&#62; &#60;dd&#62; &#60;a href="javascript:(function(){window.open('http://v.t.qq.com/share/share.php?title='+encodeURIComponent(document.title)+'&#38;url='+encodeURIComponent(location.href)+'&#38;source=bookmark','_blank','width=610,height=350');})()" title="分享到腾讯微博" rel="nofollow"&#62;腾讯微博&#60;/a&#62; &#60;/dd&#62; &#60;dd&#62; &#60;a href="javascript:void(window.open('http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url='+encodeURIComponent(document.location.href)));" title="分享到QQ空间" rel="nofollow"&#62;QQ空间&#60;/a&#62; &#60;/dd&#62; &#60;dd&#62; &#60;a href="javascript:void(function(){var%20d=document,e=encodeURIComponent,s1=window.getSelection,s2=d.getSelection,s3=d.selection,s=s1?s1():s2?s2():s3?s3.createRange().text:' ',r='http://www.douban.com/recommend/?url='+e(d.location.href)+'&#38;title='+e(d.title)+'&#38;sel='+e(s)+'&#38;v=1',x=function(){if(!window.open(r,'douban','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r+'&#38;r=1'};if(/firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})()" &#8230; <a href="http://www.keelii.com/share-sharecode/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近在给公司做网站的时候需要给产品页加上分享到微博的代码，本来用addthis的代码，但可定制性太差。于是就自己上网搜索了下总结出一个感觉还不错的代码。效果类似于文章下面的“收藏&amp;分享”。</p>
<p>如果觉得不够的话自己去搜索链接代码，图标用的是<a href="http://www.eicodesign.com/" target="_blank">eicodesign</a>发布的免费图标哦。</p>
<p><span id="more-1640"></span></p>
<p><strong>用法：</strong></p>
<p>1.复制下面的HTML代码到你的HTML文件中(最好下载，免得替换符号)：</p>
<pre>&lt;div id="ak_share"&gt;
	&lt;dl&gt;
		&lt;dt&gt;分享：&lt;/dt&gt;
		&lt;dd&gt;
			&lt;a href="javascript:(function(){window.open('http://v.t.sina.com.cn/share/share.php?title='+encodeURIComponent(document.title)+'&amp;url='+encodeURIComponent(location.href)+'&amp;source=bookmark','_blank','width=450,height=400');})()"
			title="分享到新浪微博" rel="nofollow"&gt;新浪微博&lt;/a&gt;
		&lt;/dd&gt;
		&lt;dd&gt;
			&lt;a href="javascript:(function(){window.open('http://t.163.com/article/user /checkLogin.do?link=http://news.163.com/&amp;source=' + '&amp;info='+encodeURIComponent(document.title)+' '+encodeURIComponent(location.href),'_blank','width=510,height=300');})()"
			title="分享到网易微博" rel="nofollow"&gt;网易微博&lt;/a&gt;
		&lt;/dd&gt;
		&lt;dd&gt;
			&lt;a href="javascript:(function(){window.open('http://v.t.qq.com/share/share.php?title='+encodeURIComponent(document.title)+'&amp;url='+encodeURIComponent(location.href)+'&amp;source=bookmark','_blank','width=610,height=350');})()"
			title="分享到腾讯微博" rel="nofollow"&gt;腾讯微博&lt;/a&gt;
		&lt;/dd&gt;
		&lt;dd&gt;
			&lt;a href="javascript:void(window.open('http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url='+encodeURIComponent(document.location.href)));"
			title="分享到QQ空间" rel="nofollow"&gt;QQ空间&lt;/a&gt;
		&lt;/dd&gt;
		&lt;dd&gt;
			&lt;a href="javascript:void(function(){var%20d=document,e=encodeURIComponent,s1=window.getSelection,s2=d.getSelection,s3=d.selection,s=s1?s1():s2?s2():s3?s3.createRange().text:' ',r='http://www.douban.com/recommend/?url='+e(d.location.href)+'&amp;title='+e(d.title)+'&amp;sel='+e(s)+'&amp;v=1',x=function(){if(!window.open(r,'douban','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r+'&amp;r=1'};if(/firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})()"
			title="推荐到豆瓣" rel="nofollow"&gt;豆瓣&lt;/a&gt;
		&lt;/dd&gt;
	&lt;/dl&gt;
&lt;/div&gt;</pre>
<p>2.在你的样式表中加入如下代码：</p>
<pre>#ak_share     { padding:10px 0; font-size:12px; }
.ak_share      { height:1%; overflow:hidden; }
.ak_share dt { float:left; font-weight:bold; color:#A5A5A5; height:16px; line-height:16px; }
.ak_share dd { margin-right:10px; margin-left:0; height:16px; float:left;  }
.ak_share a:hover { color:#ed7811; text-decoration:underline;}
.ak_share a     { float:left; height:16px; line-height:16px; padding-left:18px; background:url(<span style="color: #ff0000;">share.gif</span>) left top no-repeat; color:#666; text-decoration:none; }

.ak_share .t_163_s     { background-position: 0 -16px; }
.ak_share .t_qq_s     { background-position: 0 -32px; }
.ak_share .qzone_s     { background-position: 0 -48px; }
.ak_share .douban_s     { background-position: 0 -64px; }</pre>
<p><strong>注意：</strong>红色的图片路径自己修改</p>
<p><a title="想看效果猛击此处" href="http://www.keelii.com//learning/codeshare/share.html" target="_self">点击查看效果</a></p>
<p><a title="源代码及图片下载" href="http://dl.dbank.com/c0dxenm26z" target="_blank">素材打包下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/share-sharecode/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>JavaScript 正则表达式学习笔记&lt;2&gt;</title>
		<link>http://www.keelii.com/js-regular-expression-learning-part-two/</link>
		<comments>http://www.keelii.com/js-regular-expression-learning-part-two/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 11:23:23 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.keelii.com/js-regular-expression-learning-part-two/</guid>
		<description><![CDATA[那么今天继续了，上次我们熟悉了一下关于JavaScript正则表达式的一些基本匹配方式，今儿个咱来学习下String对象的一些和正则表达式有关的方法，关于这个应该不用多说，常用于表单的字符串验证。 1.String对象的replace()方法 String对象最基本的方法之一，它用于替换目标字符串中的某个字符。比如： var s = “&#8212;Hello11&#8212;”;    //将这个字符串中的-替换成# alert(s.replace(“-”,”#”));  //返回#&#8211;Hello11&#8212;而不是###Hello11### //要替换所有的-号我们可以用正则了 alert(s.replace(/-/,”#”))   //用/-/来替换#,结果与上面一样，原因是你忘了加上匹配模式 alert(s.replace(/-/g,”#”));  //这样就可以将字符串的所有的-替换成#了 //如果我想把目标字符串替换成#Hello11#该怎样写正则呢？ alert(s.replace(/-+/g,”#”));  //+是什么作用请查上篇笔记 String对象正则实现trim（去空格）效果 var s = “   Hello   “; alert(“&#124;”+s.replace(/^\s+/,”")+”&#124;”);  //替换前面的多个空格：^ alert(“&#124;”+s.replace(/\s+$/,”")+”&#124;”);  //替换后面的多个空格：$  注：加上“&#124;”易辨认 //整合到一个trim函数里面去,调用此方法时可以去掉字符串两边的空格 function trim(s){ var re1 = /^\s+/,re2 = /\s+$/; s= &#8230; <a href="http://www.keelii.com/js-regular-expression-learning-part-two/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="js-regular-expression-learning-part-two" src="http://www.keelii.com/wp-content/uploads/2010/09/jsregularexpressionlearningparttwo.jpg" alt="js-regular-expression-learning-part-two" width="524" height="204" border="0" data-pinit="registered" /></p>
<p>那么今天继续了，上次我们熟悉了一下关于JavaScript正则表达式的一些基本匹配方式，今儿个咱来学习下String对象的一些和正则表达式有关的方法，关于这个应该不用多说，常用于表单的字符串验证。</p>
<p><span id="more-1595"></span></p>
<h3>1.String对象的replace()方法</h3>
<p>String对象最基本的方法之一，它用于替换目标字符串中的某个字符。比如：</p>
<blockquote><p>var s = “&#8212;Hello11&#8212;”;    //将这个字符串中的-替换成#<br />
alert(s.replace(“-”,”#”));  //返回#&#8211;Hello11&#8212;而不是###Hello11###<br />
//要替换所有的-号我们可以用正则了<br />
alert(s.replace(/-/,”#”))   //用/-/来替换#,结果与上面一样，原因是你忘了加上匹配模式<br />
alert(s.replace(/-/<span style="color: #ff0000;">g</span>,”#”));  //这样就可以将字符串的所有的-替换成#了<br />
//如果我想把目标字符串替换成#Hello11#该怎样写正则呢？<br />
alert(s.replace(/-<span style="color: #ff0000;">+</span>/g,”#”));  //+是什么作用请查上篇笔记</p></blockquote>
<p>String对象正则实现trim（去空格）效果</p>
<blockquote><p>var s = “   Hello   “;<br />
alert(“|”+s.replace(/^\s+/,”")+”|”);  //替换前面的多个空格：^<br />
alert(“|”+s.replace(/\s+$/,”")+”|”);  //替换后面的多个空格：$  注：加上“|”易辨认<br />
//整合到一个trim函数里面去,调用此方法时可以去掉字符串两边的空格<br />
function trim(s){<br />
var re1 = /^\s+/,re2 = /\s+$/;<br />
s= s.replace(replace(),”");<br />
return s.replace(re2,”");<br />
}</p></blockquote>
<h3>2.String对象的split()方法</h3>
<p>此方法将目标字符串用某字符分割开，并返回一个数组对象。基本用法如下：</p>
<blockquote><p>var s = “12,34,56&#8243;;<br />
var arrs = s.split(“,”)<br />
alert(arrs[0]+”\n”+arrs[1]+”\n”+arrs[2]);</p></blockquote>
<p><strong>小扩展</strong>：当目标字符串是用户输入的一些字符，比如生日。我们该如何分别获取他的年、月、日。</p>
<blockquote><p>var s = “1988-8-8&#8243;;   //这里是用户输入的数据<br />
var date = s.split(“-”);<br />
var year = date[0],month = date[1],day = [2];<br />
alert(“您出生于：”+year+”年”+month+”月”+day+”日”);</p></blockquote>
<p>对于一些“不按常理出牌”的用户，我们可以用正则去搞定，比如：</p>
<blockquote><p>var s = “1988- 8 -*8&#8243;;  //比如用户这样输入了数据<br />
var date = s.split(/[^0-9]+/);  //脱字符^放在[]中间表示匹配相反内容<br />
//这个正则表示匹配多个非数字字符，用其分割<br />
var year = date[0],month = date[1],day = [2];<br />
alert(“您出生于：”+year+”年”+month+”月”+day+”日”);</p></blockquote>
<h3>3.String对象的search()方法</h3>
<p>这个方法表示查找字符串中与之匹配的字符并返回其下标值，没找到匹配值时返回-1 。比如：</p>
<blockquote><p>var s = “My age is 18.”;<br />
alert(s.search(“1&#8243;));//返回10,search方法与indexof方法的区别在于search可以使用正则</p></blockquote>
<h3>4.String对象的match()方法</h3>
<p>这个方法类似于正则中的exec方法，如：</p>
<blockquote><p>var s = “Ubuntu 8.10&#8243;;<br />
var re = /^([a-z]+)\s+(\d+)\.(\d+)/i; //正则中的.表示匹配任意字符，这里要转义它<br />
var arrs = s.match(re);<br />
alert(“name:”+arrs[1]+”\nversion:”+arrs[2]+”\nsub-version:”+arrs[3]);</p></blockquote>
<p>休息一下..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-regular-expression-learning-part-two/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JavaScript正则表达式学习笔记&lt;1&gt;</title>
		<link>http://www.keelii.com/js-regular-expression-learning-part-one/</link>
		<comments>http://www.keelii.com/js-regular-expression-learning-part-one/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 04:38:46 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.keelii.com/js-regular-expression-learning-part-one/</guid>
		<description><![CDATA[刚刚收到李炎恢老师的弟子CJ写的一部JavaScript+Ajax+JQuery视频教程，对于我这种刚入门级的菜菜来说真是雪中送炭呀！今天看到了正则表达式章节，感觉老师讲得非常不错，做点笔记与大家分享，当然也做个免费广告哈：如果想购买此视频教程的话点击这里。绝对物超所值，现在网络上最新的关于JS的视频教程也就是这个了哦。 1.什么是正则表达式 正则表达式是由普通字符（如a到z）以及特殊字符（称为元字符）组成的文字模式，该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板，将字符模式与所搜索的客串进行匹配。 关于元字符与匹配内容可以参考这张表：正则匹配表 2.怎么创建正则表达式 var re = new RegExp();//RegExp是一个对象,和Aarray一样 //但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去 re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a 可简写为“var re = /a/” re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写 RegExp构造函数第一个参数为正则表达式内容，而第二个参数则为可选项标志，而且可以组合使用。可选标志如： g （全文查找） i （忽略大小写） m （多行查找） var re = new RegExp(“a”,”gi”); //匹配所有的a或A。可简写为“var re = /a/gi” 3.正则表达式对象的方法 &#8230; <a href="http://www.keelii.com/js-regular-expression-learning-part-one/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="js-regular-expression-learning-part-one" src="http://www.keelii.com/wp-content/uploads/2010/09/jsregularexpressionlearningpartone.jpg" alt="js-regular-expression-learning-part-one" width="524" height="204" border="0" data-pinit="registered" /></p>
<p>刚刚收到李炎恢老师的弟子<a href="http://www.pl4cj.org/blog/" target="_blank">CJ</a>写的一部JavaScript+Ajax+JQuery视频教程，对于我这种刚入门级的菜菜来说真是雪中送炭呀！今天看到了正则表达式章节，感觉老师讲得非常不错，做点笔记与大家分享，当然也做个免费广告哈：如果想购买此视频教程的话<a href="http://hi.baidu.com/%C0%EE%D1%D7%BB%D6/blog/item/d8d6683fbcf925f7828b138d.html" target="_blank">点击这里</a>。绝对物超所值，现在网络上最新的关于JS的视频教程也就是这个了哦。</p>
<p><span id="more-1593"></span></p>
<h3>1.什么是正则表达式</h3>
<p>正则表达式是由普通字符（如a到z）以及特殊字符（称为元字符）组成的文字模式，该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板，将字符模式与所搜索的客串进行匹配。</p>
<p id="retable">关于元字符与匹配内容可以参考这张表：<a href="http://www.keelii.com/learning/js-learning/js-re-table.html">正则匹配表</a></p>
<h3>2.怎么创建正则表达式</h3>
<blockquote><p>var re = new RegExp();//RegExp是一个对象,和Aarray一样<br />
//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去<br />
re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a <span style="color: #ff0000;">可简写为“var re = /a/”</span><br />
re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写</p></blockquote>
<p>RegExp构造函数第一个参数为正则表达式内容，而第二个参数则为可选项标志，而且可以组合使用。可选标志如：</p>
<ul>
<li>g （全文查找）</li>
<li>i （忽略大小写）</li>
<li>m （多行查找）</li>
</ul>
<blockquote><p>var re = new RegExp(“a”,”gi”);<br />
//匹配所有的a或A。<span style="color: #ff0000;">可简写为“var re = /a/gi”</span></p></blockquote>
<h3>3.正则表达式对象的方法</h3>
<p>三种方法分别是test，exec，compile：</p>
<ul>
<li>test：返回一个Boolean值，它指出在被查找的字符串中是否存在模式。</li>
<li>exec：用正则表达式模式在字符串中运行查找，并返回包含该查找结果的一个数组。</li>
<li>compile：把正则表达式编译为内部格式，从而执行得更快。</li>
</ul>
<h3>4.正则表达式的属性</h3>
<p>常用的有以下几种：</p>
<ul>
<li>source：返回表达式文本的复本。只读。</li>
<li>lastIndex：返回字符位置，它是被查找字符串中下一次成功匹配的开始位置。</li>
<li>$1…$9：返回九个在模式匹配期间找到的、最近保存的部分。只读。</li>
<li>input ($_)：返回执行规范表述查找的字符串。只读。</li>
<li>lastMatch ($&amp;)：返回任何正则表达式搜索过程中的最后匹配字符。只读。</li>
<li>leftContext ($`) ：返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。</li>
<li>rightContext ($&#8217;) 返回被搜索的客串中从最后一个匹配位置开始到字符串结尾之间的字符。只读</li>
</ul>
<h3>5.动手测试正则表达式是如何工作的</h3>
<p>用test方法测试是否匹配模式：</p>
<blockquote><p>var re = /he/;        //最简单的正则表达式,将匹配he这个单词<br />
var str = “he”;<br />
alert(re.test(str));  //用test方法测试是否匹配，返回true<br />
str = “we”;<br />
alert(re.test(str));  //false<br />
str = “HE”;<br />
alert(re.test(str));  //false<br />
re = /he/i;           //加上可选标识i(ignoreCase)来忽略大小写<br />
alert(re.test(str));  //true<br />
str = “yeah~he loves her”;<br />
alert(re.test(str));  //true</p></blockquote>
<p>脱字符（^）开头匹配：（<a href="#retable">查表看看什么是脱字符</a>）</p>
<blockquote><p>re = /^he/i;<br />
alert(re.test(str));  //false,因为he不在str最开始<br />
str = “He is a good guy!”;<br />
alert(re.test(str));  //true</p></blockquote>
<p>美元符（$）末尾匹配：</p>
<blockquote><p>re = /^he$/i;         //$表示字符结束位置<br />
alert(re.test(str));  //返回false说明”he is a good guy”不是以he结尾<br />
str = “He”;<br />
alert(re.test(str));  //返回true</p></blockquote>
<p>（\s）空白字符匹配：（包括空格，制表符，换行，换页等）</p>
<blockquote><p>str = “user Name”;<br />
re = /\s/;<br />
alert(re.test(str));  //str=”user\nName”也将返回true</p></blockquote>
<p>方括号（[ ]）范围匹配：</p>
<blockquote><p>re = /^[a-z]/i;        //匹配开头为a~z中任意字符并且不区分大小写<br />
str = “variableName”;<br />
alert(re.test(str));  //true<br />
str = “123variableName”;<br />
alert(re.test(str));  //false</p></blockquote>
<p>用exec方法测试哪些字符匹配了模式：</p>
<blockquote><p>var osVersion = “Ubuntu 8&#8243;;<br />
var re = /^[a-z]+\s+\d+$/i;  //+表示字符至少出现1次，\d表示一个数字<br />
//这个正则表示：匹配 以a~z中任意字母为开头、至少有一个空白字符、至少有一个数字结尾的字符串<br />
alert(re.test(osVersion));   //true<br />
re = /^[a-z]+\s+\d+$/i;<br />
arr = re.exec(osVersion);<br />
alert(arr[0]);     //将osVersion完整，因为它刚好匹配re<br />
//我们只想取出数字..<br />
re=/\d+/;<br />
arr = re.exec(osVersion);<br />
alert(arr[0]);     //返回8</p></blockquote>
<p>复杂一点的子匹配：</p>
<blockquote><p>re = /^[a-z]+\s+(\d+)$/i;    //用()来创建子匹配<br />
arr = re.exec(osVersion);<br />
alert(arr[0]+”\n”+arr[1]);   //arr[1]为第一个子匹配也就是版本号8<br />
osVersion = “Ubuntu 8.10&#8243;;<br />
re = /^[a-z]+\s+(\d+)\.(\d+)$/i;    //.是正则中的元字符需要转义即“\.”表示输出一个.号<br />
arr = re.exec(osVersion);<br />
alert(“完整版本：”+arr[0]+”\n大版本号：”+arr[1]+”\n字版本号：”+arr[2]);</p></blockquote>
<p>休息一下精彩继续&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/js-regular-expression-learning-part-one/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>推荐一本JavaScript入门的书</title>
		<link>http://www.keelii.com/javascript-dom-script/</link>
		<comments>http://www.keelii.com/javascript-dom-script/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 10:38:08 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[JavaScript学习]]></category>
		<category><![CDATA[web前端关注]]></category>

		<guid isPermaLink="false">http://www.keelii.com/?p=1588</guid>
		<description><![CDATA[很惭愧学习JavaScript很长时间了但一直都还是入门阶段，先前也介绍过一本JS方面的书：《推荐一本JavaScript方面的书》。与此书相比，这次推荐给大家的书《JavaScript DOM编程艺术》就相对简单一些了。 其实我还没有买过中文版的JavaScript DOM编程艺术，我是在网上下载的英文PDF版，一章章看完感觉很不错就介绍给大家。 作者从实际出发一步步地引导读者学习有关JavaScript WEB编程的相关知识，语言简洁精炼（没过四级的我看着都不废劲^!^），难能可贵的是每一章里作者都会给出一个实例，并一步步的完善，倒数第二章“Putting It All Together”向读者介绍了一个完整的界面设计与制作，用到了前面学习到的DOM的相关操作，表现与结构分享的思想，以及JavaScript的一些基础知识。 我可以负责任的告诉大家：即使你没学习过JavaScript，只要略一点编程的看这本书绝对会收获很多东西。 PDF英文版《JavaScript DOM编程艺术》下载地址：http://www.uushare.com/user/keelii/file/3160255]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border: 0px;" title="javascript-dom-scripting" src="http://www.keelii.com/wp-content/uploads/2010/06/javascriptdomscripting.jpg" border="0" alt="javascript-dom-scripting" width="524" height="204" /></p>
<p>很惭愧学习JavaScript很长时间了但一直都还是入门阶段，先前也介绍过一本JS方面的书：<a href="http://www.keelii.com/recommand-javascript-book/">《推荐一本JavaScript方面的书》</a>。与此书相比，这次推荐给大家的书《JavaScript DOM编程艺术》就相对简单一些了。</p>
<p><span id="more-1588"></span></p>
<p>其实我还没有买过中文版的JavaScript DOM编程艺术，我是在网上下载的英文PDF版，一章章看完感觉很不错就介绍给大家。</p>
<p>作者从实际出发一步步地引导读者学习有关JavaScript WEB编程的相关知识，语言简洁精炼（没过四级的我看着都不废劲^!^），难能可贵的是每一章里作者都会给出一个实例，并一步步的完善，倒数第二章“Putting It All Together”向读者介绍了一个完整的界面设计与制作，用到了前面学习到的DOM的相关操作，表现与结构分享的思想，以及JavaScript的一些基础知识。</p>
<p>我可以负责任的告诉大家：即使你没学习过JavaScript，只要略一点编程的看这本书绝对会收获很多东西。</p>
<p>PDF英文版《JavaScript DOM编程艺术》下载地址：<a title="http://www.uushare.com/user/keelii/file/3160255" href="http://www.uushare.com/user/keelii/file/3160255">http://www.uushare.com/user/keelii/file/3160255</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/javascript-dom-script/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>漂亮的JQuery可编辑表格</title>
		<link>http://www.keelii.com/beautiful-editable-table/</link>
		<comments>http://www.keelii.com/beautiful-editable-table/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 01:42:11 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://www.keelii.com/beautiful-editable-table/</guid>
		<description><![CDATA[可编辑表格在网页开发中非常常见，尤其是与后台做Ajax应用。花了点时间学习了下这种表格的制作方法，有JQuery的时候一切都是那么简单。如果换成纯JavaScript的话一系列的DOM操作的确相当繁琐，JQuery中实现起来却异常简单。 核心JQuery代码在这里： $(function () { //隔行换色 $("tbody tr:odd").css("background-color", "#eee"); var numId = $("tbody td"); numId.click(function () { var tdIns = $(this); if (tdIns.children("input").length &#62; 0) { return false; } var inputIns = $("&#60;input type="text" /&#62;"); //需要插入的输入框代码 var text = $(this).html(); &#8230; <a href="http://www.keelii.com/beautiful-editable-table/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="display: inline; border-width: 0px;" title="edittable" src="http://www.keelii.com/wp-content/uploads/2010/06/edittable.jpg" alt="edittable" width="524" height="204" border="0" data-pinit="registered" /></p>
<p>可编辑表格在网页开发中非常常见，尤其是与后台做Ajax应用。花了点时间学习了下这种表格的制作方法，有JQuery的时候一切都是那么简单。如果换成纯JavaScript的话一系列的DOM操作的确相当繁琐，JQuery中实现起来却异常简单。</p>
<p><span id="more-1579"></span></p>
<p><strong>核心JQuery代码在这里：</strong></p>
<pre>$(function () {
	//隔行换色
	$("tbody tr:odd").css("background-color", "#eee");
	var numId = $("tbody td");
	numId.click(function () {
		var tdIns = $(this);
		if (tdIns.children("input").length &gt; 0) {
			return false;
		}
		var inputIns = $("&lt;input type="text" /&gt;"); //需要插入的输入框代码
		var text = $(this).html();
		inputIns.width(tdIns.width()); //设置input与td宽度一致
		inputIns.val(tdIns.html()); //将本来单元格td内容copy到插入的文本框input中
		tdIns.html(""); //删除原来单元格td内容
		inputIns.appendTo(tdIns).focus().select(); //将需要插入的输入框代码插入dom节点中
		inputIns.click(function () {
			return false;
		});
		//处理Enter和Esc事件
		inputIns.keyup(function (event) {
			var keycode = event.which;
			if (keycode == 13) {
				var inputText = $(this).val();
				tdIns.html(inputText);
			}
			if (keycode == 27) {
				tdIns.html(text);
			}
		});
	});
});</pre>
<p><a href="http://www.keelii.com/learning/jQuery/EditTable.html" target="_blank">效果点这里</a></p>
<p>鼠标点击单元格时单元格变成可一个文本框，可用enter和esc控制操作完成与否。</p>
<p>嗯。效果挺不错的吧！废话一句漂亮与否还得看CSS哦！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/beautiful-editable-table/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>从HTML5的角度重新思考表单元素</title>
		<link>http://www.keelii.com/rethinking-forms-in-html5/</link>
		<comments>http://www.keelii.com/rethinking-forms-in-html5/#comments</comments>
		<pubDate>Fri, 21 May 2010 13:53:18 +0000</pubDate>
		<dc:creator>kily</dc:creator>
				<category><![CDATA[web前端关注]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.keelii.com/rethinking-forms-in-html5/</guid>
		<description><![CDATA[这是一篇我在nettuts上看到的一篇文章，写得挺不错的。原文在这里：Rethinking Forms in HTML5 最近网上HTML5和Flash的口水战也不少，做为一个合格的前端了解些新知识还是很有必要的。 先来看一个传统的表单： &#60;input name=&#34;form_text&#34; id=&#34;form_text&#34; type=&#34;text&#34; value=&#34;foo&#34; size=&#34;10&#34; maxlength=&#34;100&#34;&#62; 这个表单看起来相当臃肿，而且不利于特殊人群阅读网页内容。在新的HTML5规定中会有一些增加一些新的属性来完美它们，如：autofocus, autocomplete, list, required, multiple等。 自动聚焦（autofocus） 这些新属性的作用就是让它们相对的好理解。例如： &#60;input name=&#34;form_text&#34; id=&#34;form_text&#34; type=&#34;text&#34; value=&#34;foo&#34; autofocus&#62; 这种情况的要点就在于一旦页面加载，这个文本输入框就自动聚焦，使用户的输入更加便捷。 &#60;input name=&#34;form_text&#34; id=&#34;form_text&#34; type=&#34;text&#34; value=&#34;foo&#34; autocomplete=&#34;off&#34;&#62; 这种情况，通过关闭表单自动完成功能让浏览器无法显示自动完成的效果。这就避免了因自动完成功能而输入错误内容的情况。 数据表(list) &#60;input name=&#34;form_url&#34; id=&#34;form_url&#34; type=&#34;url&#34; list=&#34;url_list&#34;&#62;&#160; &#8230; <a href="http://www.keelii.com/rethinking-forms-in-html5/">继续阅读 <span class="meta-nav">»</span></a>]]></description>
			<content:encoded><![CDATA[<p>这是一篇我在nettuts上看到的一篇文章，写得挺不错的。原文在这里：<a href="http://net.tutsplus.com/tutorials/html-css-techniques/rethinking-forms-in-html5/" target="_blank">Rethinking Forms in HTML5</a> 最近网上HTML5和Flash的口水战也不少，做为一个合格的前端了解些新知识还是很有必要的。</p>
<p>先来看一个传统的表单：</p>
<blockquote><p>&lt;input name=&quot;form_text&quot; id=&quot;form_text&quot; type=&quot;text&quot; value=&quot;foo&quot; size=&quot;10&quot; maxlength=&quot;100&quot;&gt;</p>
</blockquote>
<p>这个表单看起来相当臃肿，而且不利于特殊人群阅读网页内容。在新的HTML5规定中会有一些增加一些新的属性来完美它们，如：autofocus, autocomplete, list, required, multiple等。</p>
<p> <span id="more-1577"></span>
</p>
<p><strong>自动聚焦（autofocus）</strong></p>
<p>这些新属性的作用就是让它们相对的好理解。例如：</p>
<blockquote><p>&lt;input name=&quot;form_text&quot; id=&quot;form_text&quot; type=&quot;text&quot; value=&quot;foo&quot; <font color="#ff0000">autofocus</font>&gt;</p>
</blockquote>
<p>这种情况的要点就在于一旦页面加载，这个文本输入框就自动聚焦，使用户的输入更加便捷。</p>
<blockquote><p>&lt;input name=&quot;form_text&quot; id=&quot;form_text&quot; type=&quot;text&quot; value=&quot;foo&quot; <font color="#ff0000">autocomplete</font>=&quot;off&quot;&gt;</p>
</blockquote>
<p>这种情况，通过关闭表单自动完成功能让浏览器无法显示自动完成的效果。这就避免了因自动完成功能而输入错误内容的情况。</p>
<p><strong>数据表(list)</strong></p>
<blockquote><p>&lt;input name=&quot;form_url&quot; id=&quot;form_url&quot; type=&quot;url&quot; <font color="#ff0000">list</font>=&quot;url_list&quot;&gt;&#160; <br />&lt;<font color="#ff0000">datalist</font> id=&quot;url_list&quot;&gt;&#160; <br />&#160;&#160;&#160; &lt;option value=&quot;http://www.google.com&quot; label=&quot;Google&quot;&gt;&#160; <br />&#160;&#160;&#160; &lt;option value=&quot;http://www.nettuts.com&quot; label=&quot;NetTuts&quot;&gt;&#160; <br />&lt;/<font color="#ff0000">datalist</font>&gt; </p>
</blockquote>
<p>这个list属性的确很酷，当你用鼠标点击这个输入框时下面会自动显示出datalist的内容，通过点击它可以将内容自动添加到上面的输入框。这个效果如果要用JS制作的话就会相当麻烦了。 <strong>注</strong>：建议使用新版的opero浏览些效果，如下：</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="listdate" border="0" alt="listdate" src="http://www.keelii.com/wp-content/uploads/2010/05/listdate.jpg" width="268" height="78" /> </p>
<p><strong>多选框(multiple)</strong></p>
<blockquote><p>&lt;input name=&quot;form_url&quot; id=&quot;form_url&quot; type=&quot;url&quot; list=&quot;url_list&quot; <font color="#ff0000">multiple</font>&gt;</p>
</blockquote>
<p>multiple属性让大家可以调用页面中datalist中的内容(如上)，这双节省了我们用JS去写此功能的时间。</p>
<p><strong>必填项(required)</strong></p>
<blockquote><p>&lt;input name=&quot;form_text&quot; id=&quot;form_text&quot; type=&quot;text&quot; value=&quot;foo&quot; <font color="#ff0000">required</font>&gt;</p>
</blockquote>
<p>此属性表明该项目为必填项目，提交表单时如果为空则自动给出提示！完全不需要另写JS。</p>
<p><strong>正则(RegEx)</strong></p>
<blockquote><p>&lt;input name=&quot;form_text&quot; id=&quot;form_text&quot; type=&quot;text&quot; value=&quot;foo&quot; <font color="#ff0000">pattern</font>=&quot;[0-9][A-Z]{3}&quot;&gt;</p>
</blockquote>
<p>此属性会检查输入内容和目标正则表达式的匹配情况。</p>
<p><strong>验证(Validation)</strong></p>
<blockquote><p>&lt;input name=&quot;form_range&quot; id=&quot;form_range&quot; type=&quot;<font color="#ff0000">range</font>&quot; min=&quot;1&quot; max=&quot;10&quot; step=&quot;.5&quot; value=&quot;5&quot; &gt;</p>
</blockquote>
<p>当输入框类型为range时就可以定义内容的范围等相关项目。</p>
<p>当然以上提到的这些属性并不是每个浏览器都支持的，具体情况看下图：</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="form_input_elements" border="0" alt="form_input_elements" src="http://www.keelii.com/wp-content/uploads/2010/05/form_input_elements.gif" width="524" height="216" /> </p>
<p>更多精彩内容请阅读原文，这里只做抛砖引玉的介绍。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.keelii.com/rethinking-forms-in-html5/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

