<?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>nan.im &#187; jQuery</title>
	<atom:link href="http://nan.im/blog/tags/jquery/feed" rel="self" type="application/rss+xml" />
	<link>http://nan.im/blog</link>
	<description></description>
	<lastBuildDate>Sat, 28 Jan 2012 05:58:17 +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>常见网页选项卡 tab 的制作代码及优化小建议</title>
		<link>http://nan.im/blog/6</link>
		<comments>http://nan.im/blog/6#comments</comments>
		<pubDate>Thu, 10 Jun 2010 13:00:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[Cascading Style Sheets (CSS)]]></category>
		<category><![CDATA[CASE 案例]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript JS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Search Engine Optimization（SEO）搜索引擎优化]]></category>
		<category><![CDATA[W3C Behavior 行为层]]></category>
		<category><![CDATA[W3C Presentation 表现层]]></category>
		<category><![CDATA[W3C Structure 结构层]]></category>
		<category><![CDATA[W3C Web Standard 网页标准]]></category>

		<guid isPermaLink="false">http://www.anyliv.com/blog/?p=6</guid>
		<description><![CDATA[选项卡（Tab）起初似乎是做为控件被封装到图形用户界面元素中的一个组件，在应用程序中选项卡式界面可以大大的节省界面空间进而使一组类似的功能选项变的井井有条，目前主流的各种网页浏览器均已采用选项卡式页面浏览另外还有被微软大量运用在新版办公软件（Office）及操作系统（Windows）中的 Ribbon 控件核心也是选项卡式的设计，当然在网页中使用选项卡的例子更为常见如淘宝（TaoBao）的搜索框及右边栏就大量使用了选项卡式结构从而节省了近三倍页面空间，所以对于选项卡式网页的制作也是我们最基本需要掌握的&#8230; 一、结构层（Structure）：虽然网页上到处都是各种各样的选项卡但从结构层即 HTML 上主要有两种写法：普遍采用的是第一种即将用于触发动作的所有选项卡的标题写到一组，再将该选项卡中所有页的内容写到一组并保持两者对应顺序一致，然后使用 JavaScript 判断触发点击或划过的是第几个标题然后显示与该标题相应的第几个内容即可，该结构因为代码比较简单 JS 也容易加所以被多数网站采用；而我个人则倾向于第二种结构即每一个选项卡页的内容均单独编码，然后额外添加一个容器用来展示被选中的选项卡内容，虽然该方法的代码量会较第一种更多及复杂但可以保证在客户端即使禁用掉 CSS JavaScript 也仍具有很好的可读性，而同样的对于搜索引擎优化（SEO）更是如此，该结构可以更为清晰的告知搜索引擎你的内容组织方式及相互关系其代码如下： //首先是多数站点采用的写法： 标题一标题二标题三 内容一 内容二 内容三 //如果用户禁用 CSS JS 内容将失去相关性及联系性 //然后我自己比较推荐的写法： 标题一 内容一 标题二 内容二 标题三 内容三 //对于搜索引擎和禁用 CSS JS 的客户端依然可以保持良好的结构性 二、表现层（Presentation）：然后就可以为上述 HTML 代码添加 CSS 样式了，其目的很简单就是将选项卡修饰一个使其更像一个选项卡吧，这里仅提供第二种结构写法的样式代码关键部分，其他如果需要更多的修饰可以自行添加，具体代码如下： .itab { } .itab dl { margin:0; padding:0; } .itab dt { float:left; padding:5px; cursor:pointer; } .itab [...]]]></description>
			<content:encoded><![CDATA[<p><strong>选项卡</strong>（Tab）起初似乎是做为控件被封装到图形用户界面元素中的一个组件，在应用程序中选项卡式界面可以大大的节省界面空间进而使一组类似的功能选项变的井井有条，目前主流的各种网页浏览器均已采用选项卡式页面浏览另外还有被微软大量运用在新版办公软件（Office）及操作系统（Windows）中的 Ribbon 控件核心也是选项卡式的设计，当然在网页中使用选项卡的例子更为常见如淘宝（TaoBao）的搜索框及右边栏就大量使用了选项卡式结构从而节省了近三倍页面空间，所以对于选项卡式网页的制作也是我们最基本需要掌握的&#8230;<span id="more-6"></span></p>
<p>一、<strong>结构层（Structure）</strong>：虽然网页上到处都是各种各样的选项卡但从结构层即 HTML 上主要有两种写法：普遍采用的是第一种即将用于触发动作的所有选项卡的标题写到一组，再将该选项卡中所有页的内容写到一组并保持两者对应顺序一致，然后使用 JavaScript 判断触发点击或划过的是第几个标题然后显示与该标题相应的第几个内容即可，该结构因为代码比较简单 JS 也容易加所以被多数网站采用；而我个人则倾向于第二种结构即每一个选项卡页的内容均单独编码，然后额外添加一个容器用来展示被选中的选项卡内容，虽然该方法的代码量会较第一种更多及复杂但可以保证在客户端即使禁用掉 CSS JavaScript 也仍具有很好的可读性，而同样的对于搜索引擎优化（SEO）更是如此，该结构可以更为清晰的告知搜索引擎你的内容组织方式及相互关系其代码如下：</p>
<pre lang="html4strict" line="1">
//首先是多数站点采用的写法：
<div class="itab">
<div class="tabHead"><b>标题一</b><b>标题二</b><b>标题三</b></div>
<div class="tabBody">

内容一

内容二

内容三
</div>
</div>

 //如果用户禁用 CSS JS 内容将失去相关性及联系性

//然后我自己比较推荐的写法：
<div class="itab">
<dl>
<dt>标题一</dt>
<dd>内容一</dd>
<dt>标题二</dt>
<dd>内容二</dd>
<dt>标题三</dt>
<dd>内容三</dd>
</dl>
</div>

 //对于搜索引擎和禁用 CSS JS 的客户端依然可以保持良好的结构性
</pre>
<p>二、<strong>表现层（Presentation）</strong>：然后就可以为上述 HTML 代码添加 CSS 样式了，其目的很简单就是将选项卡修饰一个使其更像一个选项卡吧，这里仅提供第二种结构写法的样式代码关键部分，其他如果需要更多的修饰可以自行添加，具体代码如下：</p>
<pre lang="css" line="1">
.itab { }
.itab dl { margin:0; padding:0; }
.itab dt { float:left; padding:5px; cursor:pointer; }
.itab dt.active { }
.itab dd {/* display:none; */} /* 这个隐藏也建议由 JS 来实现如果客户端仅禁用 JS 却支持 CSS 的情况下不影响 */
.itab .tabBody { clear:both; }
</pre>
<p>三、<strong>行为层（Behavior）</strong>：最后当然是起重要作用的行为层了，主要对用户的一些操作如点击划过等触发一些事件从而改变现有的结构层代码达到选项卡的目的，具体代码如下：</p>
<pre lang="javascript" line="1">
$('.itab dd').hide();  //这里可以交给 CSS 隐藏但那样支持 CSS 不支持 JS 的客户端就郁闷了；
$('.itab').append('
<div class="tabBody"></div>

');
$('.itab dt').click(function(){
	$('.itab .active').removeClass('active');
	$(this).addClass('active');  //用于辅助 css 修饰的 class 可区分哪个是当前点击的标题；
	$('.itab .tabBody').empty().append($(this).next().clone());
}).eq(0).click();
</pre>
<p>我这里偷懒用了 jQuery 首先是隐藏掉原来已经有的各个内容 dd 然后为整个选项卡 itab 最后添加了一个名为 tabBody 的容器用来存放要展示的内容，接着就可以为标题绑定事件了这里选了点击（click）当然你可以可以使用划过（hover）等等，当鼠标点击标题 dt 的时候先清空容器 tabBody 的内容，然后将当前被点击的标题 dt 下面的内容 dd 克隆一份放置到容器 tabBody 中，过程非常简单，另外用于操作 class 的两句是为了方便 CSS 修饰当前被激活的标题。</p>
<p>这样结构的选项卡其优点是很明显的，可以很清楚的告诉搜索引擎和关闭 CSS JS 的客户端你的内容结构层次，当然代码上特别是 JS 代码上会稍显复杂但这样的成本我个人认为是非常值得的，也有人会说现在哪还有不支持 CSS 和 JS 的客户端呢，其实我很多时候也有过这样的想法，但好在当我看到自己的项目在一些掌上浏览器的浏览效果的时候及时否定了自己的想法……</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://202.103.172.39/tiantian.mp3" length="6290062" type="audio/mpeg" />
		</item>
		<item>
		<title>【Drupal】用 jQuery 过滤 Drupal Term 术语输入框中的中文逗号</title>
		<link>http://nan.im/blog/1239</link>
		<comments>http://nan.im/blog/1239#comments</comments>
		<pubDate>Sat, 01 May 2010 13:03:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[Develop 开发]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[JavaScript JS]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://anyLiv.com/blog/?p=1239</guid>
		<description><![CDATA[在 Drupal 中被用于分类的 taxonomy 术语表输入框在自由标签模式下默认会使用 “英文逗号” 来分割 term 术语信息，但这点会极其不方便我们的中文用户，在默认场景下会需要在输入每一个中文术语后，切换输入法到英文来输入一个逗号，然后再切换回中文继续输入下一个术语。在我的一个 Drupal 项目初期编辑们居然都是一次输入多个英文逗号，然后使用方向键调整光标来输入一个个术语，直到我发现了这个问题并提供了以下两行非常简单的 jQuery 代码大大方便了我们的用户录入信息…… 使用 jQuery 替换 Drupal Term 术语文本框里的中文标点： $('input.form-text').blur(function(){ $(this).val($(this).val().replace(/，/g, ', ')); $(this).val($(this).val().replace(/、/g, ', ')); $(this).val($(this).val().replace(/，/g, ', ')).val($(this).val().replace(/、/g, ', ')); }); 上面几行 jQuery 代码会在文本框失去焦点的时候触发，当然你也可以使用表单的 submit 触发代码替换事件，上面代码中的选择器也需要在具体项目中修改，两行代码分别会替换术语框中的中文逗号和顿号为英文的逗号，可以根据具体项目需求修改，如果两个符号均需要替换就可以采用后面的 jQuery 连写方法。]]></description>
			<content:encoded><![CDATA[<p>在 Drupal 中被用于分类的 taxonomy 术语表输入框在自由标签模式下默认会使用 “英文逗号” 来分割 term 术语信息，但这点会极其不方便我们的中文用户，在默认场景下会需要在输入每一个中文术语后，切换输入法到英文来输入一个逗号，然后再切换回中文继续输入下一个术语。在我的一个 Drupal 项目初期编辑们居然都是一次输入多个英文逗号，然后使用方向键调整光标来输入一个个术语，直到我发现了这个问题并提供了以下两行非常简单的 jQuery 代码大大方便了我们的用户录入信息……<span id="more-1239"></span></p>
<p>使用 jQuery 替换 Drupal Term 术语文本框里的中文标点：</p>
<pre lang="javascript" line="1">
$('input.form-text').blur(function(){
    $(this).val($(this).val().replace(/，/g, ', '));
    $(this).val($(this).val().replace(/、/g, ', '));

    $(this).val($(this).val().replace(/，/g, ', ')).val($(this).val().replace(/、/g, ', '));
});
</pre>
<p>上面几行 jQuery 代码会在文本框失去焦点的时候触发，当然你也可以使用表单的 submit 触发代码替换事件，上面代码中的选择器也需要在具体项目中修改，两行代码分别会替换术语框中的中文逗号和顿号为英文的逗号，可以根据具体项目需求修改，如果两个符号均需要替换就可以采用后面的 jQuery 连写方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【jQuery】网页标签属性中含有 tab 跳格符将导致 jQuery 选择器失效</title>
		<link>http://nan.im/blog/1140</link>
		<comments>http://nan.im/blog/1140#comments</comments>
		<pubDate>Sun, 13 Dec 2009 11:28:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript JS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[W3C Behavior 行为层]]></category>

		<guid isPermaLink="false">http://anyliv.com/blog/?p=1140</guid>
		<description><![CDATA[在 XHTML 代码标签（如 DIV 等）的类 class 中包含多个值时如果以 tab 跳格符分隔虽然在 css 中可以被正确识别但将可能导致 jQuery 的选择器失效。发现这个问题是在制作 Drupal 的节点模板中根据条件为 div 添加额外的 class 时发现的。 XHTML 代码： ... ... ... ... jQuery 代码： jQuery(".node .node-list").removeClass("node-page"); 问题说明：如上面提供的两段代码中，如果在上面的 div 属性 class 中的 node node-page node-list 中使用 tab 跳格符分隔，后面 jQuery 代码中的选择器将无效，如果使用 space 空格分隔的话 jQuery 选择器正常，但无论哪种情况都不会影响 css 中的选择器渲染。 当然这种情况是可以理解的，毕竟通常情况下多个 className 中不可能含有 tab 跳格符，当然也是 W3C 不支持的。但如果在 [...]]]></description>
			<content:encoded><![CDATA[<p>在 XHTML 代码标签（如 DIV 等）的类 class 中包含多个值时如果以 tab 跳格符分隔虽然在 css 中可以被正确识别但将可能导致 jQuery 的选择器失效。发现这个问题是在制作 Drupal 的节点模板中根据条件为 div 添加额外的 class 时发现的。<span id="more-1140"></span></p>
<p>XHTML 代码：</p>
<pre lang="html4strict" line="1">
<div class="node node-page node-list">
    ... ... ... ...
</div>
</pre>
<p>jQuery 代码：</p>
<pre lang="JavaScript" line="1">
jQuery(".node .node-list").removeClass("node-page");
</pre>
<p>问题说明：如上面提供的两段代码中，如果在上面的 div 属性 class 中的 node node-page node-list 中使用 tab 跳格符分隔，后面 jQuery 代码中的选择器将无效，如果使用 space 空格分隔的话 jQuery 选择器正常，但无论哪种情况都不会影响 css 中的选择器渲染。</p>
<p>当然这种情况是可以理解的，毕竟通常情况下多个 className 中不可能含有 tab 跳格符，当然也是 W3C 不支持的。但如果在 CMS 中由程序生成多个类名时，就不免会有此种情况出现。</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1140/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>为 WordPress 主题增加 jQueryTools 支持</title>
		<link>http://nan.im/blog/1151</link>
		<comments>http://nan.im/blog/1151#comments</comments>
		<pubDate>Wed, 11 Nov 2009 08:23:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[JavaScript JS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Theme Template 主题模板]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://anyliv.com/blog/?p=1151</guid>
		<description><![CDATA[用的越多越发现 jQueryTools 是一个非常不错的 jQuery 附加库，如同其官方网站所描述的 “The missing UI library for the Web” 仅仅整合了网站前端中常用的一些功能，于是忍不住想拿来替换掉本站 anyLiv.com 目前使用的 jQuery + swfObject + LightBox 形式的库，这样将大大利于未来扩展一些功能及应用。下面将提供一些代码帮助给主题模板添加 jQueryTools 支持。 这里用到了 WordPress 的 wp_enqueue_script 函数，以下代码将添加到当前主题的 functions.php 文件中： // 直接使用 wp_enqueue_script 引入即可同时自动注册该库： // 1、使用 jQueryTools 提供的 CDN 地址加载，但目前提供该服务的 NetDNA 在亚洲还没有服务器； wp_enqueue_script('jquery-tools', 'http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js', array('jquery'), '1.1.2'); // 2、最好还是直接从本地加载吧，后面的地址根据具体情况修改； wp_enqueue_script('jquery-tools', WP_CONTENT_URL.'/themes/anyLiv/script/jquery.tools.min.js', array('jquery'), '1.1.2'); // 如果你跟我一样想把 jQueryTools [...]]]></description>
			<content:encoded><![CDATA[<p>用的越多越发现 <a href="http://flowplayer.org/tools/">jQueryTools</a> 是一个非常不错的 <a href="http://jquery.com/">jQuery</a> 附加库，如同其官方网站所描述的 “The missing UI library for the Web” 仅仅整合了网站前端中常用的一些功能，于是忍不住想拿来替换掉本站 anyLiv.com 目前使用的 jQuery + swfObject + LightBox 形式的库，这样将大大利于未来扩展一些功能及应用。下面将提供一些代码帮助给主题模板添加 jQueryTools 支持。<span id="more-1151"></span></p>
<p>这里用到了 WordPress 的 <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">wp_enqueue_script</a> 函数，以下代码将添加到当前主题的 functions.php 文件中：</p>
<pre lang="php" line="1">
// 直接使用 wp_enqueue_script 引入即可同时自动注册该库：

// 1、使用 jQueryTools 提供的 CDN 地址加载，但目前提供该服务的 NetDNA 在亚洲还没有服务器；
wp_enqueue_script('jquery-tools', 'http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js', array('jquery'), '1.1.2');
// 2、最好还是直接从本地加载吧，后面的地址根据具体情况修改；
wp_enqueue_script('jquery-tools', WP_CONTENT_URL.'/themes/anyLiv/script/jquery.tools.min.js', array('jquery'), '1.1.2');

// 如果你跟我一样想把 jQueryTools 合并到 jQuery.js 文件中的话需要下面代码：
wp_deregister_script('jquery');      // 首先反注册 jquery 库的句柄；
wp_enqueue_script('jquery', WP_CONTENT_URL.'/themes/anyLiv/script/jquery.tools.min.js', false, '1.3.2');
// 反注册以后重新引入同名的 jquery 库但文件是打包了 jquery + jQueryTools 后的 js 文件；
</pre>
<p>将上面的代码加入当前主题目录下的 functions.php 中即可在模板中使用 jQueryTools 提供的方法了，如果不需要在 WordPress 后台页面也出现 jQueryTools 的话可以在外面使用 !is_admin() 作为条件判断即可。</p>
<p>后面覆写 jQuery 句柄的方法也可以用来在 WordPress 主题中禁用 jQuery 反注册后不使用 enqueue_script 即可；也可以用于替换 WordPress 默认的 jQuery 版本，如果当前 WP 附带的 1.3.2 版本并不适合你的主题，你可以使用上面的方法替换成低版本的 jQuery 库或者替换成你的 CDN 地址也是可行的（如使用 GoogleAPI 提供的地址：http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js 等等）。</p>
<p>其中 wp_enqueue_script() 的函数格式可访问 http://codex.wordpress.org/ 查询或参考下面：</p>
<blockquote><p>wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );</p>
<p>$handle：句柄，所引入 JavaScript 的唯一命名；</p>
<p>$src：地址，所引入的 JavaScript 的地址；</p>
<p>$deps：依赖，所引入 JavaScript 的依赖情况，数组格式如上面的 array(&#8216;jquery&#8217;) 字串；</p>
<p>$ver：版本，所引入 JavaScript 的版本；</p>
<p>$in_footer：页脚输出，这是 2.8.x 新加入的一个参数用于在页脚 wp_footer() 位置输出；</p></blockquote>
<p>以上的参数除 handle 以外均为可选，另外覆写 jquery 句柄的时候注意版本号最好和当前 WordPress 版本号一致。</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1151/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【jQuery】如何去掉点击链接或图片时的虚线框</title>
		<link>http://nan.im/blog/1144</link>
		<comments>http://nan.im/blog/1144#comments</comments>
		<pubDate>Fri, 30 Oct 2009 06:45:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[W3C Presentation 表现层]]></category>

		<guid isPermaLink="false">http://anyliv.com/blog/?p=1144</guid>
		<description><![CDATA[在浏览器中点击一个链接的时候会出现一个虚线框，通常情况页面会跳转我们不必在意，但如果仅仅为了触发一些动作如 AJAX 又或者被点击的是非矩形图片，那这个虚线框就有些影响视觉效果了，这里介绍一个小技巧，使用 jQuery 来方便的去掉链接或图片链接及按钮在被点击时候出现的虚线框，具体代码如下。 最近在帮 anyDzn.com 测试新版首页的时候发现的，左边的半圆形主导航链接在点击的时候会出现一个虚线框，有点影响美观，于是添加了以下代码（基于 jQuery 库兼容 Firefox 等浏览器）： jQuery(function($){ $('a,input[type="button"]').focus(function(){ $(this).blur(); //在获取焦点的时候马上失去焦点； }); }); 原理：其实原理很简单，就是当这个链接或按钮在被点击获取焦点的时候马上用 JS 使其失去焦点即可。 缺点：但该方法也有缺点，对于使用 tab 键切换焦点及不使用鼠标的用户会无法定位焦点到该链接上，这样的牺牲往往是不值得的。而如果将 focus 事件修改为 click 事件的话虽然可以使用 tab 定位焦点，但在点击的瞬间还是会有一个虚线框。开发者可以根据自己的实际情况选择合适的解决方案，但不可为了这点效果而使用户做出牺牲。]]></description>
			<content:encoded><![CDATA[<p>在浏览器中点击一个链接的时候会出现一个虚线框，通常情况页面会跳转我们不必在意，但如果仅仅为了触发一些动作如 AJAX 又或者被点击的是非矩形图片，那这个虚线框就有些影响视觉效果了，这里介绍一个小技巧，使用 jQuery 来方便的去掉链接或图片链接及按钮在被点击时候出现的虚线框，具体代码如下。<span id="more-1144"></span></p>
<p>最近在帮 <a href="http://anydzn.com/">anyDzn.com</a> 测试新版首页的时候发现的，左边的半圆形主导航链接在点击的时候会出现一个虚线框，有点影响美观，于是添加了以下代码（基于 jQuery 库兼容 Firefox 等浏览器）：</p>
<pre lang="javascript" line="1">
jQuery(function($){
    $('a,input[type="button"]').focus(function(){
        $(this).blur();      //在获取焦点的时候马上失去焦点；
    });
});
</pre>
<p>原理：其实原理很简单，就是当这个链接或按钮在被点击获取焦点的时候马上用 JS 使其失去焦点即可。</p>
<p>缺点：但该方法也有缺点，对于使用 tab 键切换焦点及不使用鼠标的用户会无法定位焦点到该链接上，这样的牺牲往往是不值得的。而如果将 focus 事件修改为 click 事件的话虽然可以使用 tab 定位焦点，但在点击的瞬间还是会有一个虚线框。开发者可以根据自己的实际情况选择合适的解决方案，但不可为了这点效果而使用户做出牺牲。</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1144/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【jQuery】使用 js &amp; jQuery 控制链接在新窗口 _blank 打开</title>
		<link>http://nan.im/blog/1085</link>
		<comments>http://nan.im/blog/1085#comments</comments>
		<pubDate>Wed, 02 Sep 2009 07:51:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[JavaScript JS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[W3C Behavior 行为层]]></category>
		<category><![CDATA[W3C Web Standard 网页标准]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.anyliv.com/blog/?p=1085</guid>
		<description><![CDATA[既然 W3C 严格标准将 target=”_blank” 属性剔除，原因是 W3C 认为未经用户同意就打开新窗口是一种不礼貌的行为，容易破坏用户体验。那么问题来了，如何能即符合 W3C 严格标准又能使页面在新窗口打开呢？按 W3C 的意思是为需要弹出新窗口的 a 链接标记添加一个 rel=”external” 属性，或许等这种标准普及以后可以通过浏览器设置是否弹出包含有 rel=”external” 属性的链接，不过目前的情况是用户希望浏览器拼命的屏蔽各种弹出广告而同时 target=”_blank” 又是我们需要的属性，具体代码可按以下方法书写…… 1、为需要弹出新窗口的 a 标记添加 rel=”external” 属性； 2、为页面添加 js 或 jQuery 代码； a、纯 JavaScript 代码： function externallinks(){ if (!document.getElementsByTagName) return; var anchors = document.getElementsByTagName("a"); for (var i=0; i]]></description>
			<content:encoded><![CDATA[<p>既然 W3C 严格标准将 target=”_blank” 属性剔除，原因是 W3C 认为未经用户同意就打开新窗口是一种不礼貌的行为，容易破坏用户体验。那么问题来了，如何能即符合 W3C 严格标准又能使页面在新窗口打开呢？按 W3C 的意思是为需要弹出新窗口的 a 链接标记添加一个 rel=”external” 属性，或许等这种标准普及以后可以通过浏览器设置是否弹出包含有 rel=”external” 属性的链接，不过目前的情况是用户希望浏览器拼命的屏蔽各种弹出广告而同时 target=”_blank” 又是我们需要的属性，具体代码可按以下方法书写……</p>
<p><span id="more-1085"></span></p>
<p>1、为需要弹出新窗口的 a 标记添加 rel=”external” 属性；</p>
<p>2、为页面添加 js 或 jQuery 代码；</p>
<blockquote><p>a、纯 JavaScript 代码：</p>
<pre lang="javascript" line="1">
function externallinks(){
  if (!document.getElementsByTagName) return;
  var anchors = document.getElementsByTagName("a");
  for (var i=0; i<anchors.length; i++){
    var anchor = anchors[i];
    if (anchor.getAttribute("href") &#038;&#038; anchor.getAttribute("rel") == "external")
  anchor.target = "_blank";
}
window.onload = externallinks;
</pre>
<p>b、使用 jQuery 添加下面一句代码即可：</p>
<pre lang="javascript" line="1">
$("a[@rel$='external']").click(function(){ this.target = "_blank"; });
</pre>
</blockquote>
<p>可以看出使用 jQuery 确实是 “Write Less Do More” 的非常方便。当然如果你跟我一样正在使用 WordPress 或通常想偷懒而不愿意手工为一些 a 链接添加 rel 属性的话，可直接添加下面的 jQuery 代码：</p>
<blockquote>
<pre lang="javascript" line="1">$(".post > .body a").not(".more-link").attr("target","_blank");</pre>
</blockquote>
<p>这句 jQuery 代码是为所有博客正文中的 a 标签硬性添加 target="_blank" 属性值而不考虑 rel="external" 属性，其中 post 和 body 类名需要根据你的主题模板调整，因为通常正文中引用的链接绝大多数都需要新开窗口浏览，而网站的其他导航部分的链接通常不需要新开窗口。</p>
<p>补充：用于 a 标签的 rel 属性还有其他的一些值如：next、previous、chapter、section 等等，在 W3C 中 rel 属性主要为了说明“该链接”与“包含该链接的页面”之间的关系。</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1085/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【手册下载】网站网页开发常用参考手册下载</title>
		<link>http://nan.im/blog/1083</link>
		<comments>http://nan.im/blog/1083#comments</comments>
		<pubDate>Wed, 02 Sep 2009 06:06:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[资源分享]]></category>
		<category><![CDATA[Cascading Style Sheets (CSS)]]></category>
		<category><![CDATA[Download 下载]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.anyliv.com/blog/?p=1083</guid>
		<description><![CDATA[无论从事网站前端还是后台开发，都会有一些参考手册如 CSS 手册 PHP 手册 jQuery 手册等等，这里提供了一些网上收集整理得非常不错的开发手册，格式主要是 CHM PDF 等，其中大部分手册可以直接从我的 SkyDrive 下载，其他有提供高速下载的资源则放上链接。另外我也有提供网站及网页开发常用的工具下载，请访问“网站开发工具下载”获得…… 【完整的在线网站技术参考手册】 by W3School.com.cn 网站地址：http://www.w3school.com.cn/ 简单说明：该网站几乎囊括了所有网站开发的中文版技术手册，从最基础的 (X)HTML 到 JavaScript XML 甚至是 ASP PHP MySQL 和 WAP 等等，几乎目前所有的主流开发手册都可以在这里找到。另外也有一些小测验方便考察自己的能力，一些简单的教程帮助初学者掌握要点。 【层叠样式表 CSS3.0 参考手册】 by 腾讯互联网业务系统网站组 发布页面：http://webteam.tencent.com/css3/ 下载地址：http://webteam.tencent.com/css3/css3.0manual.chm.zip 简单说明：相信不少朋友都跟我一样捧着 苏昱 的样式表手册看了一年又一年吧，但由于其主要内容基于微软发布的一些文档再加上版本过旧，所有难免有些地方可能与 W3C 的标准有悖，这里腾讯网页重构团队为我们详细整理了 CSS3 的参考手册，内容非常全面囊括主流的浏览器支持情况及各种示例代码截图等等，随着主流浏览器对 CSS3 的逐渐支持，该手册的重要性也会越来越强，总之，人手一本的参考手册吧。 【层叠样式表 CSS2.1 参考手册】 by CSS8.cn 下载地址：http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/样式表CSS21手册byCSS8.rar 简单说明：这是 CSS8 论坛整理并发布的 CSS2.1 参考手册，详细描述了 [...]]]></description>
			<content:encoded><![CDATA[<p>无论从事网站前端还是后台开发，都会有一些参考手册如 CSS 手册 PHP 手册 jQuery 手册等等，这里提供了一些网上收集整理得非常不错的开发手册，格式主要是 CHM PDF 等，其中大部分手册可以直接从我的 <a href="http://anyliv.spaces.live.com/files/" target="_blank">SkyDrive</a> 下载，其他有提供高速下载的资源则放上链接。另外我也有提供网站及网页开发常用的工具下载，请访问“<a href="http://anyliv.com/blog/1026.html" target="_blank">网站开发工具下载</a>”获得……</p>
<p><span id="more-1083"></span></p>
<p><strong>【完整的在线网站技术参考手册】</strong> by W3School.com.cn</p>
<blockquote><p>网站地址：<a href="http://www.w3school.com.cn/" target="_blank">http://www.w3school.com.cn/</a></p>
<p>简单说明：该网站几乎囊括了所有网站开发的中文版技术手册，从最基础的 (X)HTML 到 JavaScript XML 甚至是 ASP PHP MySQL 和 WAP 等等，几乎目前所有的主流开发手册都可以在这里找到。另外也有一些小测验方便考察自己的能力，一些简单的教程帮助初学者掌握要点。</p></blockquote>
<p><strong>【层叠样式表 CSS3.0 参考手册】</strong> by 腾讯互联网业务系统网站组</p>
<blockquote><p>发布页面：<a href="http://webteam.tencent.com/css3/" target="_blank">http://webteam.tencent.com/css3/</a></p>
<p>下载地址：<a href="http://webteam.tencent.com/css3/css3.0manual.chm.zip" target="_blank">http://webteam.tencent.com/css3/css3.0manual.chm.zip</a></p>
<p>简单说明：相信不少朋友都跟我一样捧着 苏昱 的样式表手册看了一年又一年吧，但由于其主要内容基于微软发布的一些文档再加上版本过旧，所有难免有些地方可能与 W3C 的标准有悖，这里腾讯网页重构团队为我们详细整理了 CSS3 的参考手册，内容非常全面囊括主流的浏览器支持情况及各种示例代码截图等等，随着主流浏览器对 CSS3 的逐渐支持，该手册的重要性也会越来越强，总之，人手一本的参考手册吧。</p></blockquote>
<p><strong>【层叠样式表 CSS2.1 参考手册】</strong> by CSS8.cn</p>
<blockquote><p>下载地址：<a href="http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/%E6%A0%B7%E5%BC%8F%E8%A1%A8CSS21%E6%89%8B%E5%86%8CbyCSS8.rar" target="_blank">http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/样式表CSS21手册byCSS8.rar</a></p>
<p>简单说明：这是 CSS8 论坛整理并发布的 CSS2.1 参考手册，详细描述了 CSS2.1 标准中每个属性的语法及兼容性，也添加了 IE 浏览器的一些私有属性并配以示例代码，该手册由 CSS8.cn 维护并更新。</p></blockquote>
<p><strong>【层叠样式表 CSS2.0 参考手册】</strong> by 苏昱</p>
<blockquote><p>下载地址：<a href="http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/%E6%A0%B7%E5%BC%8F%E8%A1%A8CSS20%E6%89%8B%E5%86%8Cby%E8%8B%8F%E6%98%B1.rar" target="_blank">http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/样式表CSS20手册by苏昱.rar</a></p>
<p>简单说明：这是来自 苏昱 基于微软 MSDN 文档库整理的 CSS2 样式表参考手册，相信也是大部分网站前端一直收藏使用的手册之一，该手册 2001 年发布首个版本以后与 2002 年进行了唯一的一次更新，该手册内容主要来自 MSDN 文档，所有仅有 IE 浏览器的部分（话说即使是今天国内的 IE 浏览器市场仍在 98% 以上）值得收藏的一本手册吧。</p></blockquote>
<p><strong>【层叠样式表 IE 滤镜参考手册】</strong> by 苏昱</p>
<blockquote><p>下载地址：<a href="http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/%E6%A0%B7%E5%BC%8F%E8%A1%A8IE%E6%BB%A4%E9%95%9C%E6%89%8B%E5%86%8Cby%E8%8B%8F%E6%98%B1.rar" target="_blank">http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/样式表IE滤镜手册by苏昱.rar</a></p>
<p>简单说明：同样来自 苏昱 整理的微软 Internet Explorer 浏览器样式表滤镜手册，其实该手册并不推荐大家使用，毕竟只有 IE 浏览器支持这些滤镜。</p></blockquote>
<p><strong>【jQuery 1.3 API 中文版手册】</strong> by 一揪</p>
<blockquote><p>发布页面：<a href="http://code.google.com/p/jquery-api-zh-cn/" target="_blank">http://code.google.com/p/jquery-api-zh-cn/</a></p>
<p>在线浏览：<a href="http://jquery-api-zh-cn.googlecode.com/svn/trunk/xml/jqueryapi.xml" target="_blank">http://jquery-api-zh-cn.googlecode.com/svn/trunk/xml/jqueryapi.xml</a></p>
<p>下载地址：<a href="http://code.google.com/p/jquery-api-zh-cn/downloads/list" target="_blank">http://code.google.com/p/jquery-api-zh-cn/downloads/list</a></p>
<p>简单说明：优秀的 jQuery 类库是一个优雅的 JavaScript 增强类库，使用 CSS 的选择器大大方便了开发人员并完美处理了浏览器兼容性问题，使开发者可以将全部的精力放在网站主体“Write Less Do More”很好的解释了 jQuery 的用途及价值。该手册由 一揪 整理并保持更新目前已超过 14 万次下载。</p></blockquote>
<p><strong>【jQuery 1.3 API for Dreamweaver】</strong></p>
<blockquote><p>下载地址：<a href="http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/jQueryAPI-ForDw-MXP.rar">http://cid-1b6bfa69bfa348b5.skydrive.live.com/self.aspx/OpenData/TechBook/jQueryAPI-ForDw-MXP.rar</a></p>
<p>简单说明：这是用于 Adobe Dreamweaver CS3/CS4 的 jQuery 自动完成插件，里面包括了 CS3 CS4 的 MXP 安装版与绿色版插件，安装以后使用 jQuery 编写 jQuery 文档的时候会有代码自动完成及提示信息，非常方便实用。</p></blockquote>
<p>…… 未完·待续 ……</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1083/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【jQuery】智能自动调整 WordPress 边栏高度</title>
		<link>http://nan.im/blog/1080</link>
		<comments>http://nan.im/blog/1080#comments</comments>
		<pubDate>Fri, 28 Aug 2009 10:06:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CMS 内容管理系统]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Theme Template 主题模板]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.anyliv.com/blog/?p=1080</guid>
		<description><![CDATA[在 WordPress 中由于边栏小工具（widget）的引入使我们配置边栏区块内容变得非常方便例如：放置广告、谷歌小工具、放置腾讯滔滔、等等各种小工具，但随着小工具的增多，边栏也逐渐变得比正文更高，特别是如果摘要列表页只有一篇文章的时候，整个页面会被撑开实在有损美观，这里有一句基于 jQuery 的代码可以在边栏超过主体内容的时候动态删除最后一个小工具达到页面平衡的目的…… 首先是原理，其实很简单对于两栏的博客来说，当页面主要内容部分的高度小于边栏的高度时，就删除边栏上最后一个小工具（因为我的小站最下面几个小工具都是无关紧要的小组件所以删除几个也不会有什么影响）代码如下： 简单解释一下：首先是载入 jQuery 库然后用了一个 while 循环，如果边栏高度大于主体内容的高度就 remove 掉最后一个 class 为 toys 的小工具，然后再次循环检查直到主体内容高度大于边栏。当然这里的 side 为边栏的 class 这里的 main 为页面主体内容的 class 还有 toys 为边栏每个小工具的 class 这些名字需要根据你的主题模板调整后再将代码放入你的主题的 head 标签中即可。]]></description>
			<content:encoded><![CDATA[<p>在 WordPress 中由于边栏小工具（widget）的引入使我们配置边栏区块内容变得非常方便例如：<a href="https://www.google.com/adsense/">放置广告</a>、<a href="http://www.google.com/ig/directory?synd=open">谷歌小工具</a>、<a href="http://www.taotao.com/flash.shtml">放置腾讯滔滔</a>、等等各种小工具，但随着小工具的增多，边栏也逐渐变得比正文更高，特别是如果摘要列表页只有一篇文章的时候，整个页面会被撑开实在有损美观，这里有一句基于 jQuery 的代码可以在边栏超过主体内容的时候动态删除最后一个小工具达到页面平衡的目的……</p>
<p><span id="more-1080"></span></p>
<p>首先是原理，其实很简单对于两栏的博客来说，当页面主要内容部分的高度小于边栏的高度时，就删除边栏上最后一个小工具（因为我的小站最下面几个小工具都是无关紧要的小组件所以删除几个也不会有什么影响）代码如下：</p>
<pre lang="html4strict" line="1">
<?php wp_enqueue_script("jquery"); wp_head(); ?>    <!-- 引入 jQuery 类库 -->
<script type="text/javascript">
while( $("div.side").height() > $("div.main").height() ){    <!-- 判断边栏高度是否大于主体高度 -->
	$(".toys:last").remove();
}
</script>
</pre>
<p>简单解释一下：首先是载入 jQuery 库然后用了一个 while 循环，如果边栏高度大于主体内容的高度就 remove 掉最后一个 class 为 toys 的小工具，然后再次循环检查直到主体内容高度大于边栏。当然这里的 side 为边栏的 class 这里的 main 为页面主体内容的 class 还有 toys 为边栏每个小工具的 class 这些名字需要根据你的主题模板调整后再将代码放入你的主题的 head 标签中即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1080/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>修改 WordPress 主题原生支持 LightBox 和 TagCloud 无需插件</title>
		<link>http://nan.im/blog/1058</link>
		<comments>http://nan.im/blog/1058#comments</comments>
		<pubDate>Fri, 14 Aug 2009 08:46:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CODE 代码]]></category>
		<category><![CDATA[Develop 开发]]></category>
		<category><![CDATA[DIY MOD]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Theme Template 主题模板]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.anyliv.com/blog/?p=1058</guid>
		<description><![CDATA[目前本博所用的模板还是半年前从 zblog 转到 WordPress 时自己做的，当时做成以后一直没有怎么修改过，也装了不少插件结果页面打开速度就越来越慢，今天花了一些时间暂时把比较有用的 LightBox 和 TagCloud 直接整合到了模板中，这样可以少装两个插件了，因为一些定制的属性可以直接写模板里面不用存数据库，整合之后效果还是相当明显的： 修改之前的首页加载时间 7s 页面大小 215kb 左右；修改之后的首页加载时间 5s 页面大小 133kb 左右。 目前使用 YSlow 测试按照小型网站及博客标准（Small Site or Blog）可以得到 Grade A 相当不错了，如果将 TagCloud.swf 压缩并使用 GoogleAPI 加载 js 的话理论上页面加载速度还可以更快，暂时还是这样吧，由于浏览器缓存原因页面上的部分内容可能显示错误，建议使用 Ctrl+F5 重新加载一次本站页面更新浏览器缓存。 一、整合 LightBox 插件： 整合 LightBox 相对要容易的多，其实此类插件有很多如 AutoThickBox LightBox2 等等，相关的 js 类库也有很多，我这里选的是 jQuery LightBox Plugin 原因是本站之前已经引入了 jQuery 类库，所以之后添加的 js 都会在 jQuery [...]]]></description>
			<content:encoded><![CDATA[<p>目前本博所用的模板还是半年前从 zblog 转到 WordPress 时自己做的，当时做成以后一直没有怎么修改过，也装了不少插件结果页面打开速度就越来越慢，今天花了一些时间暂时把比较有用的 LightBox 和 TagCloud 直接整合到了模板中，这样可以少装两个插件了，因为一些定制的属性可以直接写模板里面不用存数据库，整合之后效果还是相当明显的：</p>
<blockquote><p>修改之前的首页加载时间 7s 页面大小 215kb 左右；修改之后的首页加载时间 5s 页面大小 133kb 左右。</p></blockquote>
<p>目前使用 YSlow 测试按照小型网站及博客标准（Small Site or Blog）可以得到 Grade A 相当不错了，如果将 TagCloud.swf 压缩并使用 GoogleAPI 加载 js 的话理论上页面加载速度还可以更快，暂时还是这样吧，由于浏览器缓存原因页面上的部分内容可能显示错误，建议使用 Ctrl+F5 重新加载一次本站页面更新浏览器缓存。</p>
<p><span id="more-1058"></span></p>
<p>一、整合 LightBox 插件：</p>
<p>整合 LightBox 相对要容易的多，其实此类插件有很多如 AutoThickBox LightBox2 等等，相关的 js 类库也有很多，我这里选的是 <a href="http://leandrovieira.com/projects/jquery/lightbox/" target="_blank">jQuery LightBox Plugin</a> 原因是本站之前已经引入了 jQuery 类库，所以之后添加的 js 都会在 jQuery 的基础上考虑，另外我个人使用过得类似功能的 js 插件中这个插件最小而且功能够用，非常划算。</p>
<p>1、下载 jQuery LightBox Plugin 插件，下载页面：<a href="http://leandrovieira.com/projects/jquery/lightbox/" target="_blank">http://leandrovieira.com/projects/jquery/lightbox/</a>；</p>
<p>2、将 js 及 css 引入模板文件，这里具体路径需要根据实际情况调整：</p>
<blockquote>
<pre lang="html4strict" line="1">
<script type="text/javascript" src="script/jquery.lightbox-0.4.js" />
<link type="text/css" href="style/jquery.lightbox-0.4.css" rel="stylesheet" media="screen" />
</pre>
<p>具体路径需要根据实际调整，如果想写的通用可以使用 bloginfo("template_url") 调取主题模板目录然后加上相关文件的相对路径拼出绝对路径使用，上面的引入动作建议放在 head 标签以内。其实这里应该推荐使用 wp_enqueue_script() 函数载入 js 文件。</p></blockquote>
<p>3、为图片绑定 LightBox 动作，可在直接在你的模板文件或者主题调用的 js 文件中加上以下代码：</p>
<blockquote>
<pre lang="javascript" line="1">
$("a:has(img)").lightBox({
	imageBlank:"/images/lightbox-blank.gif",
	imageLoading:"/images/lightbox-ico-loading.gif",
	imageBtnClose:"/images/lightbox-btn-close.gif",
	imageBtnPrev:"/images/lightbox-btn-prev.gif",
	imageBtnNext:"/images/lightbox-btn-next.gif"    //这里注意一定不要再加“ , ”号了在 IE6 下会报错；
});
</pre>
<p>这里 jQuery 强大的选择器就派上了用场，第一句即为所有含有 img 标签的 a 标签都启动 LightBox 支持，这样设置之后含有 img 标签的链接就会被启用 LightBox 效果了，具体使用时最好限制一下前面的选择器，不然整个页面的图片都启用 LightBox 了。后面的属性定义主要用于 LightBox 效果上的几个图片如 加载图片、向前翻页、向后翻页、退出浏览 等，图片均建议放置在主题里面并保证在调用时的路径正确。</p></blockquote>
<p>二、整合 TagCloud 插件：</p>
<p>这里其实是整合了 WordPress 的 <strong><a href="http://wordpress.org/extend/plugins/wp-cumulus/" target="_blank">WP-Cumulus</a></strong> 插件，就是那个漂亮的标签 “云” 下面将直接给 WP 自带的“标签云”小工具加上动画效果。</p>
<p>1、下载 Cumulus 插件，下载页面：<a href="http://www.roytanck.com/2008/05/19/how-to-repurpose-my-tag-cloud-flash-movie/" target="_blank">http://www.roytanck.com/</a>；里面有示例下载及如何使用的详细说明包括<a href="http://www.roytanck.com/2008/11/07/about-wp-cumulus-in-chinese/">如何修改 wp-cumulus 支持中文</a> 但我个人修改后对于中文的结果不是太理想。</p>
<p>2、拼装所需的字符串，由于 WordPress 默认的标签云字串不适合 cumulus 文件使用，这里需要重新拼装一下：</p>
<blockquote>
<pre lang="javascript" line="1">
var txtTag = '';
$('.widget_tag_cloud > div').attr('id','divTag');
$('#divTag > a').each(function(){
	txtTag += '<a href="' + $(this).attr('href') + '" style="' + $(this).css('font-size') + '">';
	txtTag += $(this).text().replace(/[^0-9A-Za-z]/ig,'');    //这里过滤一下，只保留英文和数字；
	txtTag += '</a>';
});
</pre>
<p>首先定义了一个临时的中间变量 textTag 为后面使用，然后给 WordPress 默认的标签云 div 定义了一个 id 以方便我们后面调用，之后遍历系统提供的所有标签链接 a 标记，并重新拼装累加，由于未修改过的 cumulus 不支持中文，这里用正则过滤了一下。
</p></blockquote>
<p>3、使用 <strong><a href="http://jquery.thewikies.com/swfobject/" target="_blank">jQuery.swfObject</a></strong> 加载动画，为了浏览器兼容性我使用 jQuery.swfObject 来加载动画文件，这里并没有使用最新的 swfObject 而是使用 jQuery.swfObject 插件，因为文件更小也可以很好的和 jQuery 兼容，当然你也可以使用 GoogleAPI 加载最新的 swfObject 文件：</p>
<blockquote>
<pre lang="javascript" line="1">
$('#divTag').flash({
	swf: tPaz + '/images/swfTagCloud.swf', height: 200, width: 200,
	params:{ wmode:'transparent', menu:'false' },
	flashvars:{ tcolor:'0x21759B', tcolor2:'0x333333', hicolor:'0x000000',
		tspeed:'100', distr:'true', mode:'both',
		tagcloud:'<tags>' + txtTag + '</tags>' }
});    //这里具体的参数均可以根据实际情况修改；
</pre>
<p>具体这里都是 jQuery.swfObject 的用法，这里不再做详细说明，里面的值均可根据自己情况修改，其中 txtTag 的值就是前面我重新拼装的标签链接字符串。</p></blockquote>
<p>至此，主题修改完成，这样不用安装 LightBox 和 WP-Cumulus 插件，同样可以拥有这两个比较炫的功能，其实也可以使用 wp_enqueue_script("thickbox") 函数来直接调用 WordPress 里面的 ThickBox 插件也是一个不错的选择，而且 ThickBox 本身就比 LightBox 支持更多形式的内容，这里没有使用的原因是本站只有图片的 LightBox 展示需求，而且 ThickBox 展示的图片会被强制缩放以适合窗口，这是我不需要的。</p>
<p>最后补充一下，自 WordPress 2.8 版本开始 WordPress 官方将推荐使用 <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script" target="_blank">wp_enqueue_script()</a> 函载入各种 JavaScript 类库，例如使用 wp_enqueue_script("jquery") 默认参数将载入 WordPress 自带的 jQuery 在 wp_head() 位置，如果需要在 wp_foot() 位置载入 js 则需要 wp_enqueue_script("jquery", None, array(), false, true) 这种格式；载入的 jQuery 使用 no conflict 模式，即不绑定 $ 函数控制模式，所以在主题文件里面需要在 wp_head() 函数之前使用 wp_enqueue_script("jquery") 函数，否则将导致不能载入 jQuery 文件，在使用 jQuery 库的时候可能需要以 jQuery(function($){... code here ...}); 的形式来在 js 文件里面重新使用 $ 函数。</p>
]]></content:encoded>
			<wfw:commentRss>http://nan.im/blog/1058/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

