<?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; JavaScript</title>
	<atom:link href="http://shawphy.com/category/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://shawphy.com</link>
	<description>关注HTML,CSS,JavaScript,jQuery等前端开发</description>
	<lastBuildDate>Mon, 12 Jul 2010 15:45:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>jQuery 1.3 正式版发布公告</title>
		<link>http://shawphy.com/2009/01/release-jquery-1-3.html</link>
		<comments>http://shawphy.com/2009/01/release-jquery-1-3.html#comments</comments>
		<pubDate>Wed, 14 Jan 2009 19:58:30 +0000</pubDate>
		<dc:creator>Shawphy</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shawphy.com/?p=139</guid>
		<description><![CDATA[http://docs.jquery.com/Release:jQuery_1.3 jQuery 1.3终于发布了。 min版(gzip后18kb) 源码(114kb) 另外可以用google的代码托管： http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js 下面这个是我自己用Packer压缩的pack版 http://shawphy.com/down/jquery-1.3.pack.js(37kb) 简要来说： 更新了Sizzle选择器引擎，这个之前也提到过。可以查看他的性能： 此外据声称，把代码给了dojo基金会。这回Sizzle的野心在于能够让其他各种JS库都能用，包括Prototype, Dojo, Yahoo UI, MochiKit, 和 TinyMCE等等其他库。 live 事件 这也是jQuery 1.3这次更新的第二个重大更新。 可以看下面iframe中的效果以及源码 性能比较： 这样，我以前写的关于重复绑定的文章就差不多可以抛弃了 Event 对象 新增了一个jQuery.Event对象，他根据w3c文档，做了一个完整的，兼容所有浏览器的一个对象。具体还得看文档。 append, prepend, before, 和 after 方法重写 据声称，这些方法的效率提升了6倍 重写了offset方法 这回更快了 取消了浏览器侦测，全面改用jQuery.support 具体还得看文档了。 变化： &#8230; <a href="http://shawphy.com/2009/01/release-jquery-1-3.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://docs.jquery.com/Release:jQuery_1.3">http://docs.jquery.com/Release:jQuery_1.3</a></p>
<p>jQuery 1.3终于发布了。<br />
<a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.min.js">min版</a>(gzip后18kb)<br />
<a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.js">源码</a>(114kb)</p>
<p>另外可以用google的代码托管：<br />
<a href="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js">http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js</a></p>
<p>下面这个是我自己用<a href="http://dean.edwards.name/packer/">Packer</a>压缩的pack版<br />
<a href="http://shawphy.com/down/jquery-1.3.pack.js">http://shawphy.com/down/jquery-1.3.pack.js</a>(37kb)</p>
<p><strong>简要来说：</strong></p>
<p>更新了Sizzle选择器引擎，这个之前也提到过。可以查看他的性能：<br />
<a href="http://docs.jquery.com/Release:jQuery_1.3#Performance"><img src="http://farm4.static.flickr.com/3399/3196296260_c7a0be70be.jpg"/></a><br />
此外据声称，把代码给了dojo基金会。这回Sizzle的野心在于能够让其他各种JS库都能用，包括Prototype, Dojo, Yahoo UI, MochiKit, 和 TinyMCE等等其他库。</p>
<p><strong>live 事件</strong><br />
这也是jQuery 1.3这次更新的第二个重大更新。</p>
<p>可以看下面iframe中的效果以及源码<br />
<iframe height="125" width="100%" src="/demo/live.html" style="border: medium none ;"></iframe><br />
性能比较：<br />
<a href="http://docs.jquery.com/Release:jQuery_1.3#Performance"><img src="http://farm4.static.flickr.com/3491/3195452055_a411849f82.jpg"/></a></p>
<p>这样，我以前写的<a href="http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-a.html">关于重复绑定</a>的文章就差不多可以抛弃了</p>
<p><strong>Event 对象</strong><br />
新增了一个jQuery.Event对象，他根据w3c文档，做了一个完整的，兼容所有浏览器的一个对象。具体还得看文档。</p>
<p><strong>append, prepend, before, 和 after 方法重写</strong><br />
据声称，这些方法的效率提升了6倍<br />
<a href="http://docs.jquery.com/Release:jQuery_1.3#Performance"><img src="http://farm4.static.flickr.com/3422/3196296910_6d385bd9df.jpg"/></a></p>
<p><strong>重写了offset方法</strong><br />
这回更快了<br />
<a href="http://docs.jquery.com/Release:jQuery_1.3#Performance"><img src="http://farm4.static.flickr.com/3082/3195452579_e90f85f79c.jpg"/></a></p>
<p><strong>取消了浏览器侦测，全面改用jQuery.support</strong><br />
具体还得看文档了。<br />
<strong>变化：</strong><br />
其中与开发者比较密切的是<br />
[@attr] 中的@在1.3里不能用了<br />
用trigger触发的事件现在能冒泡了<br />
ready方法中，再也不等css加载完了再执行其中代码了。直接要求把css放在脚本之前就行<br />
简化了.isFunction方法，那些偏门的就被无视了<br />
用选择器a, b, c选择东西，在支持querySelectorAll (Safari, Firefox 3.1+, Opera 10+, IE 8+)中会按照这些元素在文档中顺序来确定这些数组在获得的对象列表中的位置。而不支持这个方法的浏览器则按照选择器顺序排好<br />
新增了jQuery.Event<br />
要求网页都在标准模式下，不要在怪异模式下使用，否则会报错。<br />
以下3个方法属性已被不推荐使用。<br />
    * jQuery.browser<br />
    * jQuery.browser.version<br />
    * jQuery.boxModel </p>
<p><strong>具体内容：</strong><br />
<strong>内核部分：</strong><br />
    更好的queue, dequeue<br />
	新增selector, context这两个属性，分别指向获取这个元素的原始选择器和被查找的内容（可选）<br />
<strong>选择器部分：</strong><br />
	Sizzle的使用<br />
	复杂的css例如not(a, b)<br />
<strong>属性部分：</strong><br />
	toggleClass( "className", state ) &#8211; 增加了一个布朗值的参数。<br />
<strong>筛选文档：</strong><br />
	.closest( selector ) &#8211; 找到离这个元素最近的一个父元素。这跟parents不一样。<br />
	is() 也支持更复杂的选择器了。<br />
<strong>操作文档：</strong><br />
	HTML Injection重写了<br />
	$("&lt;script/&gt;") 就自动转化为 $(document.createElement("script"))<br />
<strong>css：</strong><br />
	offset()重写了<br />
<strong>事件：</strong><br />
	Live 事件<br />
	jQuery.Event<br />
	trigger()会冒泡了<br />
<strong>效果：</strong><br />
	hide() .show()之类的加快速度<br />
	内置动画效果考虑到了margin和 padding<br />
	.toggle( boolean ) 多提供了一个参数<br />
	jQuery.fx.off 关闭所有动画<br />
<strong>AJAX：</strong><br />
	.load()支持了文本格式的数据<br />
<strong>工具：</strong><br />
	新增jQuery.isArray </p>
<p><strong>内部：</strong><br />
	jQuery.support</p>
<p>另外这回改用YUI的工具压脚本了</p>
<p>========================================</p>
<p>最后预告一下，jQuery文档官网已经针对1.3版做了修改，中文文档也在紧张制作中。<br />
文档地址：<a href="http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html">http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shawphy.com/2009/01/release-jquery-1-3.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>FireUnit:基于Firebug的JavaScript单元测试扩展</title>
		<link>http://shawphy.com/2008/12/fireunit.html</link>
		<comments>http://shawphy.com/2008/12/fireunit.html#comments</comments>
		<pubDate>Thu, 18 Dec 2008 08:43:15 +0000</pubDate>
		<dc:creator>Shawphy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[FireUnit]]></category>

		<guid isPermaLink="false">http://shawphy.com/?p=128</guid>
		<description><![CDATA[John Resig最近在他的博客中发表文章John Resig &#8211; FireUnit: JavaScript Unit Testing Extension.发布了他与Jan Odvarko合作开发的一款基于Firebug的扩展FireUnit。(Firebug真是越来越强大了……) 简单说来，FireUnit给Firebug增加了一个标签面板，并提供了一些简单的JavaScript API来记录和查看测试。 举例来说： // Simple true-like/false-like testing fireunit.ok(&#160;true, &#34;I'm going to pass!&#34; ); fireunit.ok(&#160;false, &#34;I'm going to fail!&#34; ); &#160; // Compare two strings - shows a diff of the &#8230; <a href="http://shawphy.com/2008/12/fireunit.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>John Resig最近在他的博客中发表文章<a href="http://ejohn.org/blog/fireunit/">John Resig &#8211;   FireUnit: JavaScript Unit Testing Extension</a>.发布了他与<a href="http://www.softwareishard.com/">Jan Odvarko</a>合作开发的一款基于Firebug的扩展<a href="http://fireunit.org/">FireUnit</a>。(Firebug真是越来越强大了……)<br />
简单说来，FireUnit给Firebug增加了一个标签面板，并提供了一些简单的JavaScript API来记录和查看测试。<br />
举例来说：</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: #ffa500;">// Simple true-like/false-like testing</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">ok</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">true</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">I'm going to pass!</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">ok</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">false</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">I'm going to fail!</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// Compare two strings - shows a diff of the</span></li>
<li><span style="color: #ffa500;">// results if they're different</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">compare</span><span style="color: Olive;">(</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">The lazy fox jumped over the log.</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">The lazy brown fox jumped the log.</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Are these two strings the same?</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// Compare a string using a regular expression</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">reCompare</span><span style="color: Olive;">(</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #8b0000;">/</span><span style="color: Red;">The .* fox jumped the log.</span><span style="color: #8b0000;">/</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">The lazy brown fox jumped the log.</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Compare a string using a RegExp.</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// Display the total results</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">testDone</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p>就可以在Firebug中的Test标签面板中看到下图：</p>
<p style="text-align: center;"><a href="http://ejohn.org/blog/fireunit/"><img src="http://fireunit.org/fireunit-1.png" alt="fireunit测试" /></a></p>
<p>FireUnit还可以模拟触发原生浏览器事件：</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: #ffa500;">// You can also simulate browser events</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">input</span><span style="color: Gray;"> = </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">input</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">mouseDown</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">input</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">input</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">focus</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">input</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">key</span><span style="color: Olive;">(</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">input</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">a</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li></ol></div>
<p>此外，可以批量测试文件（每个文件都含有一些独立测试）</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: #ffa500;">// Or run multiple pages of tests:</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">runTests</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">test2.html</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">test3.html</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// Place at the end of every test file in order to continue</span></li>
<li><span style="color: Blue;">fireunit</span><span style="color: Gray;">.</span><span style="color: Blue;">testDone</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<p style="text-align: center;"><a href="http://ejohn.org/blog/fireunit/"><img src="http://www.softwareishard.com/images/posts/fireunit/fireunit-ui-thumb.png" alt="fireunit批量测试" /></a></p>
<p>推荐把测试代码包含在下面的if语句内</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;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: Green;">typeof</span><span style="color: Gray;"> </span><span style="color: Blue;">fireunit</span><span style="color: Gray;"> === </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">object</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//Your code for test</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>如果感兴趣，可以访问<a href="http://fireunit.org/">Fireunit.org</a>下载并测试（这个网站内就包含了测试代码，安装后即可看到第一张图的内容）<br />
可以在Github上获取<a href="http://github.com/jeresig/fireunit">源码</a>，得用git而不是svn<br />
Jan也写了一篇<a href="http://www.softwareishard.com/blog/firebug/fireunit-testing-in-the-firebug-world/">文章</a>，可以看看。</p>
]]></content:encoded>
			<wfw:commentRss>http://shawphy.com/2008/12/fireunit.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>页面加载完成后新建的元素事件绑定问题(下)</title>
		<link>http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-b.html</link>
		<comments>http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-b.html#comments</comments>
		<pubDate>Wed, 23 Jul 2008 20:57:17 +0000</pubDate>
		<dc:creator>Shawphy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shawphy.com/?p=105</guid>
		<description><![CDATA[页面加载完成后新建的元素事件绑定问题(上) ============================= 2号解决方案——事件冒泡法 利用事件冒泡的原理，我们给这个按钮的祖先元素绑定事件处理函数。 然后通过event.target这个对象来判断，这个事件是不是我们要找的对象触发的。 通常可以利用一些DOM属性，比如event.target.className、event.target.tagName等之类的来判断。 &#60;td&#62;&#60;button class=&#34;del&#34;&#62;删除&#60;/button&#62;&#60;/td&#62; jQuery(function($) { &#160; &#160; //第四个表格的删除按钮事件绑定 &#160; &#160; $(&#34;#table4&#34;).click(function(e)&#160;{ &#160; &#160; &#160; &#160; if&#160;(e.target.className==&#34;del&#34;) { &#160; &#160; &#160; &#160; &#160; &#160; $(e.target).parents(&#34;tr&#34;).remove(); &#160; &#160; &#160; &#160; }; &#160; &#160; }); &#160; &#160; //第四个表格的添加按钮事件绑定 &#8230; <a href="http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-b.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-a.html">页面加载完成后新建的元素事件绑定问题(上)</a><br />
=============================<br />
2号解决方案——事件冒泡法<br />
利用事件冒泡的原理，我们给这个按钮的祖先元素绑定事件处理函数。<br />
然后通过event.target这个对象来判断，这个事件是不是我们要找的对象触发的。<br />
通常可以利用一些DOM属性，比如event.target.className、event.target.tagName等之类的来判断。</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;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li></ol></div>
<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: Blue;">jQuery</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第四个表格的删除按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table4</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">e</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">target</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;">==</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">target</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">parents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">tr</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第四个表格的添加按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#add4</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table4&gt;tbody</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;tr&gt;&lt;td&gt;新增行&lt;/td&gt;&lt;td&gt;&lt;button class=&quot;del&quot;&gt;删除&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li></ol></div>
<p>=============================<br />
3号解决方案——复制事件法<br />
上面几种方案可以说即便你没有用到jQuery库，你也能相对比较容易的实现。但这种方案相对依赖jQuery的程度更高。而且必须要求jQuery 1.2版以上。低版本jQuery需要插件。<br />
上面两个方案都是对删除函数动了很多脑筋，换了多种触发、绑定的方式。这个方案不同，可以与平时纯静态的元素一样在domready的时候绑定。但在我们添加新行的时候我们改动一下，不再想上面那样拼接字符串来添加新行了。这回我们尝试使用复制DOM元素的方式。并且复制的时候连同绑定的事件一起复制，复制完之后再用find之类的修改内部的元素。<br />
同时，就像这个例子，如果你会把所有元素都删除光，那template这个模板是必须的，如果不会删光，那就未必需要用template了。为了防止被误删，此处我把template设了隐藏。<br />
我使用了jQuery中特有的clone(true)</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: Blue;">.template</span><span style="color: Olive;">{</span><span style="color: Green;">display:</span><span style="color: Red;">none</span><span style="color: Gray;">;</span><span style="color: Olive;">}</span></li></ol></div>
<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;">tr</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">template</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这里是模板</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</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;">tr</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;">tr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</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;">tr</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;">tr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</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;">tr</span><span style="color: Olive;">&gt;</span></li></ol></div>
<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: Blue;">jQuery</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第五个表格的删除按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table5 .del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">()</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">parents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">tr</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第五个表格的添加按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#add5</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table5&gt;tbody&gt;tr:eq(0)</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//连同事件一起复制</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">clone</span><span style="color: Olive;">(</span><span style="color: Green;">true</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//去除模板标记</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">removeClass</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">template</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//修改内部元素</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">find</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">td:eq(0)</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">text</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">新增行</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">end</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//插入表格</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">appendTo</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table5&gt;tbody</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li></ol></div>
<p>=============================<br />
总评：<br />
上面4种方案，各有优劣。<br />
0号方案，结构与行为完全没有分离，而且污染全局命名空间。最不推荐。所以我都不把它当作一个方案来看。但对于js初学者，可以用来项目救急。<br />
1号方案，中规中矩，没啥好也没啥不好<br />
2号方案，这种方法充分的发挥了js事件冒泡的优势。<del datetime="2008-07-24T08:09:16+00:00">而且效率最高。但同时由于这种方案无视了jQuery强大的选择器，所以如果涉及的元素属性要求过多就会比较麻烦了。你会徘徊在众多if的条件的是非关系之中。</del><ins datetime="2008-07-24T08:09:16+00:00">后来我想起来，可以用jQuery中的$(event.target).is(selector)来作为条件。这样可以极大提升开发效率，但略微降低执行效率。</ins><br />
3号方案，这是我认为最能体现结构与行为分离的思想的一种方案。但缺点也很明显，对于jQuery依赖性过于高了，要不就自己写一个复制连同事件一起复制的函数，但这也显然对于初学者来说异常困难。<ins datetime="2008-07-24T08:09:16+00:00">但从未来的趋势的角度来看，还是很推荐使用这种方案的。</ins></p>
<p>具体选用哪一个方案，没有定数。具体看你的项目以及你js还有结构与行为分离的思想的掌握程度。最适合的才是最好的。</p>
<p>=============================<br />
附加：<br />
把3号方案改造成完美的结构行为分离的样式。<br />
首先，带有template的是模板元素。他是一切复制的源泉，为了防止被误删，所以设为不可见。如果不会删除光，那么这个模板元素也是可选的。因为你可以复制任何一个已经存在的用于循环元素。<br />
其次，给每个重复的元素加上一个repeat，方便用于删除按钮找到这一级元素。这个是可选的，有时候并不需要。<br />
最后是给每一个要修改的元素加上一个类，便于用find找到。比如我这里就家了content类，新增加的可以修改里边的值。<br />
这样一个完美的结构与行为分离的案例就完成了。</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;">table</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;">table6</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">tbody</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;">tbody6</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;">tr</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">template repeat</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这里是模板</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</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;">tr</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;">tr</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">repeat</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</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;">tr</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;">tr</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">repeat</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</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;">tr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">tbody</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">tfoot</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;">tr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Navy;">&amp;nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</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;">add6</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">添加</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</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;">tr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">tfoot</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">table</span><span style="color: Olive;">&gt;</span></li></ol></div>
<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: Blue;">jQuery</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第六个表格的删除按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#tbody6 .del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">()</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">parents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">.repeat</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第六个表格的添加按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#add6</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#tbody6&gt;.template</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//连同事件一起复制</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">clone</span><span style="color: Olive;">(</span><span style="color: Green;">true</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//去除模板标记</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">removeClass</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">template</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//修改内部元素</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">find</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">.content</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">text</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">新增行</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">end</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//插入表格</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">appendTo</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#tbody6</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li></ol></div>
<p>同样，这段js也适用于如下的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;">tbody6</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&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;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">template repeat</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;">span</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这里是模板</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">span</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;">span</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </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; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">repeat</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;">span</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">span</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;">span</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </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; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">li</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">repeat</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;">span</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">span</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;">span</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </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></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-b.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>页面加载完成后新建的元素事件绑定问题(上)</title>
		<link>http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-a.html</link>
		<comments>http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-a.html#comments</comments>
		<pubDate>Wed, 23 Jul 2008 20:15:12 +0000</pubDate>
		<dc:creator>Shawphy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://shawphy.com/?p=82</guid>
		<description><![CDATA[本文demo：http://shawphy.com/demo/event/event.html 很多人会像我一样遇到这样一个问题： 在页面加载完成后给元素绑定了事件，但又新增加的元素上却没有绑定任何事件。 js的事件监听跟css不一样，css只要设定好了样式，不论是原来就有的还是新添加的，都有一样的表现。而事件监听不是，你必须给每一个元素单独绑定事件。 常见的例子是处理表格的时候。每行行末有个删除按钮，点了这个能够删除这一行。 &#60;table&#62;&#160;&#160; &#160;&#60;tbody&#62;&#160;&#160; &#160; &#160; &#160;&#60;tr&#62;&#160;&#160; &#160; &#160; &#160; &#160; &#160;&#60;td&#62;这行原来就有&#60;/td&#62;&#160;&#160; &#160; &#160; &#160; &#160; &#160;&#60;td&#62;&#60;button class=&#34;del&#34;&#62;删除&#60;/button&#62;&#60;/td&#62;&#160;&#160; &#160; &#160; &#160;&#60;/tr&#62;&#160;&#160; &#160; &#160; &#160;&#60;tr&#62;&#160;&#160; &#160; &#160; &#160; &#160; &#160;&#60;td&#62;这行原来就有&#60;/td&#62;&#160;&#160; &#160; &#160; &#160; &#160; &#160;&#60;td&#62;&#60;button class=&#34;del&#34;&#62;删除&#60;/button&#62;&#60;/td&#62;&#160;&#160; &#160; &#160; &#8230; <a href="http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-a.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>本文demo：<a href="http://shawphy.com/demo/event/event.html">http://shawphy.com/demo/event/event.html</a><br />
很多人会像我一样遇到这样一个问题：<br />
在页面加载完成后给元素绑定了事件，但又新增加的元素上却没有绑定任何事件。</p>
<p>js的事件监听跟css不一样，css只要设定好了样式，不论是原来就有的还是新添加的，都有一样的表现。而事件监听不是，你必须给每一个元素单独绑定事件。</p>
<p>常见的例子是处理表格的时候。每行行末有个删除按钮，点了这个能够删除这一行。</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">table</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">tbody</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">tr</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">tr</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">tr</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这行原来就有</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">tr</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">tbody</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">table</span><span style="color: Olive;">&gt;</span></div></div>
<p>通常，我会这么绑定</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: Blue;">jQuery</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//已有删除按钮初始化绑定删除事件</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">.del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">()</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">parents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">tr</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li></ol></div>
<p>对于在domready之前就存在的删除按钮，一切都很完美。但如果在domready之后用js动态添加几行，那新增的几行中的这些按钮都将失去任何作用。</p>
<p>如何解决这个问题？以下提供4种解决方案：<br />
=============================<br />
0号解决方案——onclick法<br />
如果不顾结构与行为分离的准则的话，通常，我会这么做。<br />
<strong>注意</strong>，此时的deltr这个function必须是全局函数，得放jQuery(function($) {})外面，放里边就成局部函数了，html里的onclick就调用不到了！</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;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">deltr(this)</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li></ol></div>
<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: Blue;">jQuery</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//添加行</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#add2</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table2&gt;tbody</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;tr&gt;&lt;td&gt;新增行&lt;/td&gt;&lt;td&gt;&lt;button onclick=&quot;deltr(this)&quot;&gt;删除&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//删除行的函数，必须要放domready函数外面</span></li>
<li><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">deltr</span><span style="color: Olive;">(</span><span style="color: Blue;">delbtn</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: Blue;">delbtn</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">parents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">tr</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li></ol></div>
<p>=============================<br />
1号解决方案——重复绑定法<br />
即，在domready的时候就给已有的元素绑定事件处理函数，<br />
而后当新增加的元素的时候再次绑定。</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;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li></ol></div>
<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: Blue;">jQuery</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//定义删除按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//写里边，防止污染全局命名空间</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">deltr</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">parents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">tr</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//已有删除按钮初始化绑定删除事件</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table3 .del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Blue;">deltr</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//添加行</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#add3</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;tr&gt;&lt;td&gt;新增行&lt;/td&gt;&lt;td&gt;&lt;button class=&quot;del&quot;&gt;删除&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//在这里给删除按钮再次绑定事件。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">find</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">.del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Blue;">deltr</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">end</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .</span><span style="color: Blue;">appendTo</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table3&gt;tbody</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li></ol></div>
<p>=============================<br />
2号解决方案——事件冒泡法<br />
利用事件冒泡的原理，我们给这个按钮的祖先元素绑定事件处理函数。<br />
然后通过event.target这个对象来判断，这个事件是不是我们要找的对象触发的。<br />
通常可以利用一些DOM属性，比如event.target.className、event.target.tagName等之类的来判断。</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;">td</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">删除</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">td</span><span style="color: Olive;">&gt;</span></li></ol></div>
<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: Blue;">jQuery</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第四个表格的删除按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table4</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">e</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">target</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;">==</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">del</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">target</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">parents</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">tr</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">remove</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//第四个表格的添加按钮事件绑定</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#add4</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">click</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">#table4&gt;tbody</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;tr&gt;&lt;td&gt;新增行&lt;/td&gt;&lt;td&gt;&lt;button class=&quot;del&quot;&gt;删除&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li></ol></div>
<p><a href="http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-b.html">页面加载完成后新建的元素事件绑定问题(下)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shawphy.com/2008/07/bind-handle-on-the-new-added-elements-part-a.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JavaScript switch case 语句设置范围</title>
		<link>http://shawphy.com/2008/07/javascript-switch-case-setting-range.html</link>
		<comments>http://shawphy.com/2008/07/javascript-switch-case-setting-range.html#comments</comments>
		<pubDate>Mon, 07 Jul 2008 20:07:25 +0000</pubDate>
		<dc:creator>Shawphy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://shawphy.com/?p=65</guid>
		<description><![CDATA[不知是否出于什么缘故，我google搜索 javascript switch case 范围 这几个关键字，出来的前几条都是csdn上关于无解的表示。 可能是其他编译型语言中，case后便必须是常量的缘故吧。 后来在一个边角的地方看到某人发帖是VB还是不知道哪个语言中的中实现了switch case语句的范围选择，大家看了下面代码就明白了。 var x=1 switch(true){ &#160; &#160; case&#160;x&#62;0&#38;&#38;x&#60;10: &#160; &#160; &#160; &#160; alert(1);break; &#160; &#160; case&#160;x&#62;=10&#38;&#38;x&#60;20: &#160; &#160; &#160; &#160; alert(2);break; } 看明白啦？就是利用传递给switch的参数设为true，把原来的变量变成常量，常量变变量，逆向思维。巧妙吧？ 本来我想出来的办法是这样的，没有上面的好，没有跳出思维定势，也贴出来给大家看看，权当娱乐娱乐了 var x=1 switch(x){ &#160; &#160; case&#160;(x&#62;0&#38;&#38;x&#60;10)*x: &#160; &#160; &#160; &#8230; <a href="http://shawphy.com/2008/07/javascript-switch-case-setting-range.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>不知是否出于什么缘故，我google搜索<br />
javascript switch case 范围<br />
这几个关键字，出来的前几条都是csdn上关于无解的表示。<br />
可能是其他编译型语言中，case后便必须是常量的缘故吧。</p>
<p>后来在一个边角的地方看到某人发帖是VB还是不知道哪个语言中的中实现了switch case语句的范围选择，大家看了下面代码就明白了。</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;">x</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span></li>
<li><span style="color: Green;">switch</span><span style="color: Olive;">(</span><span style="color: Green;">true</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">0</span><span style="color: Gray;">&amp;&amp;</span><span style="color: Blue;">x</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">10</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Gray;">&gt;=</span><span style="color: Maroon;">10</span><span style="color: Gray;">&amp;&amp;</span><span style="color: Blue;">x</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">20</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>看明白啦？就是利用传递给switch的参数设为true，把原来的变量变成常量，常量变变量，逆向思维。巧妙吧？</p>
<p>本来我想出来的办法是这样的，没有上面的好，没有跳出思维定势，也贴出来给大家看看，权当娱乐娱乐了</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;">x</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span></li>
<li><span style="color: Green;">switch</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">0</span><span style="color: Gray;">&amp;&amp;</span><span style="color: Blue;">x</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">10</span><span style="color: Olive;">)</span><span style="color: Gray;">*</span><span style="color: Blue;">x</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">&gt;=</span><span style="color: Maroon;">10</span><span style="color: Gray;">&amp;&amp;</span><span style="color: Blue;">x</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">20</span><span style="color: Olive;">)</span><span style="color: Gray;">*</span><span style="color: Blue;">x</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://shawphy.com/2008/07/javascript-switch-case-setting-range.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>找出页面内重复的Id</title>
		<link>http://shawphy.com/2008/07/find-repeat-id.html</link>
		<comments>http://shawphy.com/2008/07/find-repeat-id.html#comments</comments>
		<pubDate>Sat, 05 Jul 2008 16:33:40 +0000</pubDate>
		<dc:creator>Shawphy</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://shawphy.com/?p=62</guid>
		<description><![CDATA[今天群里提起这事， 判断页面内是否有重复的id 一种是已知id，看是否有重复。基本上Ctrl+F就能搞定~ 但是Robin给出了方法： function chkid(idname){ &#160; &#160; s=0; &#160; &#160; divs = document.getElementsByTagName(&#34;*&#34;); &#160; &#160; for&#160;(i=0; i&#60;divs.length; i++){ &#160; &#160; &#160; &#160; if(divs[i].getAttribute(&#34;id&#34;)==idname) &#160; &#160; &#160; &#160; &#160; &#160; s++; &#160; &#160; } &#160; &#160; alert(s); } 而后我又在其基础上修改了能够找出页面内所有重复的Id function &#8230; <a href="http://shawphy.com/2008/07/find-repeat-id.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今天群里提起这事，<br />
判断页面内是否有重复的id</p>
<p>一种是已知id，看是否有重复。基本上Ctrl+F就能搞定~<br />
但是Robin给出了方法：</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;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">chkid</span><span style="color: Olive;">(</span><span style="color: Blue;">idname</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">divs</span><span style="color: Gray;"> = </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">*</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">divs</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">divs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">getAttribute</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">id</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">==</span><span style="color: Blue;">idname</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">s</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: Blue;">s</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>而后我又在其基础上修改了能够找出页面内所有重复的Id</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;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">chkid</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">did</span><span style="color: Gray;">=</span><span style="color: Olive;">{}</span><span style="color: Gray;">,</span><span style="color: Blue;">tmpid</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">divs</span><span style="color: Gray;"> = </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">*</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Blue;">divs</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">--</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">(</span><span style="color: Blue;">tmpid</span><span style="color: Gray;">=</span><span style="color: Blue;">divs</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp;</span><span style="color: Blue;">did</span><span style="color: Olive;">[</span><span style="color: Blue;">tmpid</span><span style="color: Olive;">]</span><span style="color: Gray;">===</span><span style="color: Blue;">undefined</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ?</span><span style="color: Blue;">did</span><span style="color: Olive;">[</span><span style="color: Blue;">tmpid</span><span style="color: Olive;">]</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :</span><span style="color: Blue;">did</span><span style="color: Olive;">[</span><span style="color: Blue;">tmpid</span><span style="color: Olive;">]</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">did</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">did</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">&amp;&amp;</span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">id=</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Blue;">i</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">重复了</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Olive;">(</span><span style="color: Blue;">did</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">次</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>比较可靠，兼容ie和ff。<br />
不过一般的html检查器都有这个功能，这个代码又有多大用处呢？呵呵，感觉没有。</p>
]]></content:encoded>
			<wfw:commentRss>http://shawphy.com/2008/07/find-repeat-id.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
