<?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>潘魏增 &#187; tab</title>
	<atom:link href="http://panweizeng.com/archives/tag/tab/feed" rel="self" type="application/rss+xml" />
	<link>http://panweizeng.com</link>
	<description>活在回忆里,细数时间下过的蛋.</description>
	<lastBuildDate>Sun, 29 Aug 2010 17:03:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>YUI实现的Tab切换</title>
		<link>http://panweizeng.com/archives/489</link>
		<comments>http://panweizeng.com/archives/489#comments</comments>
		<pubDate>Sat, 14 Feb 2009 16:19:20 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=489</guid>
		<description><![CDATA[YUI自带了一个TabView，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。 以前大树写过一个TabControl的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问测试页面查看效果，完整javascript代码在这里。 注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。 1：使用 以下是常用的html结构，但不限于此。 &#60;ul id=&#34;t&#34;&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t1&#34;&#62;t1&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t2&#34;&#62;t2&#60;/li&#62; &#160; &#160; &#160; &#160; &#60;li&#160;id=&#34;t3&#34;&#62;t3&#60;/li&#62; &#60;/ul&#62; &#60;div&#160;id=&#34;s&#34;&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s1&#34;&#62;s1&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s2&#34;&#62;s2&#60;/div&#62; &#160; &#160; &#160; &#160; &#60;div&#160;id=&#34;s3&#34;&#62;s3&#60;/div&#62; &#60;/div&#62; 对应的javascript代码如下，四种初始化方法都是可以的。 var tab = new Tab($D.get('t').getElementsByTagName('li'), $D.get('s').getElementsByTagName('div'));//1 var&#160;tab = new Tab(['t1','t2', 't3'],['s1','s2', 's3']);//2 var&#160;tab = [...]]]></description>
			<content:encoded><![CDATA[<p>YUI自带了一个<a href="http://developeryahoo.com/yui/tabview/">TabView</a>，虽然很简洁也很强大，但是常常不是想要的那种。Tab切换应该不依赖于HTML结构，能给设计人员和前端开发最大的灵活性。原理：一个tab对象分为控制部分(trigger)，内容部分(sheet)。当trigger被触发时，显示对应的sheet。</p>
<p>以前<a href="http://www.bigtreexu.com">大树</a>写过一个<a href="http://panweizeng.com/images/javascript/TabControl.1.0.U.js">TabControl</a>的代码，经过两年的使用依旧很考谱，说明当初这个思路还是比较符合实际需求的。我改成了基于YUI的版本，可能看起来更清晰一些。先访问<a href="http://panweizeng.com/images/javascript/tab-test.html">测试页面</a>查看效果，完整javascript代码在<a href="http://panweizeng.com/images/javascript/tab.js">这里</a>。</p>
<p>注意：改成实际代码时，请将Tab类放在某个命名空间下，不要直接暴露在全局空间中。</p>
<p>1：使用<br />
以下是常用的html结构，但不限于此。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">ul</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">t3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">t3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">li</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">ul</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s1</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s1</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s2</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">s3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">s3</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>对应的javascript代码如下，四种初始化方法都是可以的。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">li</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">, $</span><span style="color: Blue;">D</span><span style="color: Gray;">.</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">s</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">div</span><span style="color: #8b0000;">'</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//1</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//2</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">([</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">triggerEvent</span><span style="color: Gray;">:</span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: Blue;">slideEnabled</span><span style="color: Gray;">:</span><span style="color: Green;">true</span><span style="color: Olive;">})</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//3</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Tab</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span><span style="color: #ffa500;">//4</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">add</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">t3</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">s3</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">; </span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">triggerEvent</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">mouseover</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">config</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">slideEnabled</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Green;">true</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">onShow</span><span style="color: Gray;">.</span><span style="color: Blue;">subscribe</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">t</span><span style="color: Gray;">, </span><span style="color: Blue;">a</span><span style="color: Olive;">){</span><span style="color: Gray;"> ... </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">tab</span><span style="color: Gray;">.</span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p>2：扩展<br />
已经实现自动切换功能(默认关闭)，另外可以通过onShow自定义事件扩展，也可以在原代码基础上添加更多的自定义事件。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/489/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
