<?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; jQuery</title>
	<atom:link href="http://leo-n.com/tag/jquery/feed" rel="self" type="application/rss+xml" />
	<link>http://leo-n.com</link>
	<description>Leo.N&#039;s Blog</description>
	<lastBuildDate>Tue, 12 Oct 2010 14:36:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>利用jQuery实现文章部分内容收缩</title>
		<link>http://leo-n.com/slide-post-with-jquery.html</link>
		<comments>http://leo-n.com/slide-post-with-jquery.html#comments</comments>
		<pubDate>Sat, 21 Nov 2009 14:53:36 +0000</pubDate>
		<dc:creator>Leo.N</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://leo-n.com/?p=662</guid>
		<description><![CDATA[　　记得以前写过一篇名叫利用Collapsible Elements实现文章内容折叠效果的文章，当时Willin大师说过可以用jQuery来实现，无奈当时对jQuery毫无一点研究，只能硬着头皮用插件解决，这短时间稍微研究了下jQuery后，发现实现起来其实很简单，无非就是使用slideDown和slideUp俩函数，但下面代码和demo里面默认的是FadeIn和FadeOut两个函数，效果是渐显和渐隐，为什么不用收缩效果呢？因为在IE里面用收缩函数会不完美，在此再次鄙视IE。 　　结合Willin大师思路做出来的精简版： $(document).ready(function() { var botton='&#60;span  style="cursor: pointer; color:#CC0033;background:#000;"&#62;点我&#60;/span&#62;'; $('#box-botton').append(botton); //向#box-botton内添加上面定义的按钮 $('#box-botton&#62;p').addClass('box');//为#box-botton内的&#60;P&#62;...&#60;/P&#62;内添加class=botton $('.box').insertAfter('.botton'); //把按钮放在展开内容之前，因为默认会把按钮放在展开内容之后 $('.botton').click(function() { $(this).siblings().slideToggle(500);return false;}); //使用siblings是为了选择全部包含class=box的段落，如果使用next或prev的话只能选择相邻的同辈元素，也就是上面的一个或下面的一个，如果存在多个段落的话就会失效。 }); 　　现在这个应该算是比较完美的版本了，解决了按钮会落在展开内容下面的缺陷，但效果只有展开，如果需要更多效果，请参照后面的代码修改。 　　使用方法：在需要使用的地方用&#60;div id=box-botton&#62;&#60;/div&#62;包起来，如果你嫌字母太多的话，那就换个字母少的单词定义元素。 　　Demo：http://leo-n.com/demo/demo2.html 　　之前的代码如下： $(document).ready(function() { var off='&#60;span class="show-box" style="cursor: pointer; color:#CC0033;background:#000;"&#62;召唤出来&#60;/span&#62;'; var on='&#60;span class="close-box" style="cursor: pointer; color: #CC0033;background:#000;display:none;"&#62;解散回去&#60;/span&#62;';//定义按钮 $('#box-botton').append(on); $('#box-botton').append(off); //向#box-botton内添加上面定义的按钮 $('#box-botton&#62;p').addClass('box');//为#box-botton内的p标签添加class=box $('.box').insertAfter('.show-box'); $('.box').insertAfter('.close-box'); $('.show-box').click(function() { $('.show-box').hide(); $('.close-box').show(); //$('.box').slideDown('slow');//缓慢展开 $('.box').fadeIn(1200);//在1.2s之内渐显 //$('.box').show();//直接显示 }); [...]]]></description>
			<content:encoded><![CDATA[<p>　　记得以前写过一篇名叫<a href="http://leo-n.com/wordpress-plugins-collapsible-elements.html" target="_blank">利用Collapsible Elements实现文章内容折叠效果</a>的文章，当时Willin大师说过可以用jQuery来实现，无奈当时对jQuery毫无一点研究，只能硬着头皮用插件解决，这短时间稍微研究了下jQuery后，发现实现起来其实很简单，无非就是使用slideDown和slideUp俩函数，但下面代码和demo里面默认的是FadeIn和FadeOut两个函数，效果是渐显和渐隐，为什么不用收缩效果呢？因为在IE里面用收缩函数会不完美，在此再次鄙视IE。</p>
<p>　　结合Willin大师思路做出来的精简版：</p>
<blockquote><p><code>$(document).ready(function() {<br />
var botton='&lt;span  style="cursor: pointer; color:#CC0033;background:#000;"&gt;点我&lt;/span&gt;';<br />
$('#box-botton').append(botton);<br />
//向#box-botton内添加上面定义的按钮<br />
$('#box-botton&gt;p').addClass('box');//为#box-botton内的&lt;P&gt;...&lt;/P&gt;内添加class=botton<br />
$('.box').insertAfter('.botton');<br />
//把按钮放在展开内容之前，因为默认会把按钮放在展开内容之后<br />
$('.botton').click(function() {<br />
$(this).siblings().slideToggle(500);return false;});<br />
 //使用siblings是为了选择全部包含class=box的段落，如果使用next或prev的话只能选择相邻的同辈元素，也就是上面的一个或下面的一个，如果存在多个段落的话就会失效。<br />
});</code></p></blockquote>
<p>　　现在这个应该算是比较完美的版本了，解决了按钮会落在展开内容下面的缺陷，但效果只有展开，如果需要更多效果，请参照后面的代码修改。</p>
<p>　　使用方法：在需要使用的地方用<code>&lt;div id=box-botton&gt;&lt;/div&gt;</code>包起来，如果你嫌字母太多的话，那就换个字母少的单词定义元素。</p>
<p>　　Demo：<a href="http://leo-n.com/demo/demo2.html" target="_blank">http://leo-n.com/demo/demo2.html</a></p>
<p>　　之前的代码如下：<span id="more-662"></span></p>
<blockquote><p><code>$(document).ready(function() {<br />
var off='&lt;span class="show-box" style="cursor: pointer; color:#CC0033;background:#000;"&gt;召唤出来&lt;/span&gt;';<br />
var on='&lt;span class="close-box" style="cursor: pointer; color: #CC0033;background:#000;display:none;"&gt;解散回去&lt;/span&gt;';//定义按钮<br />
$('#box-botton').append(on);<br />
$('#box-botton').append(off); //向#box-botton内添加上面定义的按钮<br />
$('#box-botton&gt;p').addClass('box');//为#box-botton内的p标签添加class=box<br />
$('.box').insertAfter('.show-box');<br />
$('.box').insertAfter('.close-box');<br />
$('.show-box').click(function() {<br />
$('.show-box').hide();<br />
$('.close-box').show();<br />
//$('.box').slideDown('slow');//缓慢展开<br />
$('.box').fadeIn(1200);//在1.2s之内渐显<br />
//$('.box').show();//直接显示<br />
});<br />
$('.close-box').click(function() {<br />
$('.close-box').hide();<br />
$('.show-box').show();<br />
//$('.box').slideUp('slow');<br />
$('.box').fadeOut(1200);<br />
//$('.box').hide();<br />
});<br />
});</code></p></blockquote>
<p>依葫芦画瓢，如果你喜欢收缩形式（如果你能无视在IE中的缺陷的话），你就选择slideDown和slideUp，如果喜欢直来直去的话，就选择Show和Hide，想有点效果又顾虑IE缺陷的话，就用现在默认的，恩对了，还是那句话，必须加载jQuery框架，且在footer.php里加载以上代码。</p>
<p>　　还有，使用之前务必在模板CSS里定义<code>.box{display:none;}</code>，当然，这样做出来你可能会觉得很简陋，呃，那就依自己喜好在<code>.box</code>里面加点佐料吧。</p>
<p>　　<del>特别说明下，现在代码有一个可以称为bug的地方，就是展开后按钮位置是位于展开内容下面，对访客体验有点不好，但无奈于本人水平，没找到解决办法，高手请指点一下，我将不胜感激。</del>已经解决。</p>
<p>　　Demo：<a href="http://leo-n.com/demo/box.html" target="_blank">http://leo-n.com/demo/box.html</a></p>
<p>　　还有还有，我手上有几个淘江湖的玩偶邀请，想要的童鞋请留言，我能赠送的只限于下图显示为彩色的玩偶：<!--more--><img class="alignnone" title="taobao" src="http://lh5.ggpht.com/_3SKwLpzY0xM/Swf-Nx8ijQI/AAAAAAAAAMo/j7AG4IvezKs/s800/tao.jpg" alt="" width="496" height="549" /></p>
]]></content:encoded>
			<wfw:commentRss>http://leo-n.com/slide-post-with-jquery.html/feed</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>利用jQuery改变网页元素加载顺序</title>
		<link>http://leo-n.com/modify-html-load-by-jquery.html</link>
		<comments>http://leo-n.com/modify-html-load-by-jquery.html#comments</comments>
		<pubDate>Fri, 13 Nov 2009 09:06:07 +0000</pubDate>
		<dc:creator>Leo.N</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://leo-n.com/?p=653</guid>
		<description><![CDATA[　　在上一篇介绍副标题处显示嘀咕消息的文章中，我是把嘀咕的js放在header.php中，这是一个常规的方法，简单方便易实现，但这方法也存在一个很大的弊端，因为网页是按从上到下的顺序进行加载，引用了一段外部js在头部后，自己博客首页打开速度就会受到影响，还有就是在外部js失效后，博客首页也就会卡在那打不开了，极大的降低了访客体验度，有没有其他方法可以解决呢？ 　　我首先想到的方法就是把嘀咕的代码单独保存为一个php文件，加载到index.php的底部中，再利用css的绝对定位absolute把其定位到博客副标题处来显示，用top和left调整好位置后，在我笔记本屏幕上显示没有问题，但换到其他分辨率下，错位问题也就随之而来了， 具体原因请看absolute的定位原理： 元素框从文档流完全删除，并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭，就好像元素原来不存在一样。元素定位后生成一个块级框，而不论原来它在正常流中生成何种类型的框。 所以，这个方法被否决了，Google之后，我发现了另外的一个方法，就是本文标题所述的内容：利用jQuery改变网页元素加载顺序，下面就以副标题处显示嘀咕消息为例来介绍如何利用jQuery来改变网页元素的加载顺序。 　　首先，在header.php里添加一个id为digu的空白div，例如： &#60;div id="digu"&#62; &#60;/div&#62; 接着，到index.php的&#60;?php get_footer(); ?&#62;下面再添加一个id为digux的div，在里面加载之前独立保存出来的digu.php，写出来大概是这个样子： &#60;div id="digux"&#62; &#60;?php include_once("digu.php"); ?&#62; &#60;/div&#62; 再在下面加入本文最核心的jQ代码： &#60;script type="text/javascript"&#62; $('#digu').html($('#digux').html()); &#60;/script&#62; &#62; 也可以写成： &#60;script type="text/javascript"&#62; $('#digux').children().clone().appendTo('#digu'); &#60;/script&#62; 这段代码基本意思就是把id为digux的内容复制到digu之中，这样我们就成功的利用jQuery改变了副标题处嘀咕消息的加载顺序，因为header.php中的digu是空白层，真正的内容是在index.php的digux之中，所以，浏览器最后加载的是digux层，这样就不会因为外部引用的js导致博客打开缓慢或打开不完全了。 　　忘了说，实现以上效果我们还需在footer.php里加载jQuery框架以及定义digux的CSS为display:none，这就不做过多说明了，之前的文中有过介绍。 　　这篇文章旨在抛砖引玉，此方法适用的范围很大，大家可以尽情发掘使用。作为一个初识jQuery的人来说，我已经被jQuery的强大征服了。 　　文中jQ代码参考自http://leeiio.me/jquery-changes-divsorder/。]]></description>
			<content:encoded><![CDATA[<p>　　在上一篇介绍<a href="http://leo-n.com/digu-for-description.html" target="_blank">副标题处显示嘀咕消息</a>的文章中，我是把嘀咕的js放在header.php中，这是一个常规的方法，简单方便易实现，但这方法也存在一个很大的弊端，因为网页是按从上到下的顺序进行加载，引用了一段外部js在头部后，自己博客首页打开速度就会受到影响，还有就是在外部js失效后，博客首页也就会卡在那打不开了，极大的降低了访客体验度，有没有其他方法可以解决呢？</p>
<p>　　我首先想到的方法就是把嘀咕的代码单独保存为一个php文件，加载到index.php的底部中，再利用css的绝对定位absolute把其定位到博客副标题处来显示，用top和left调整好位置后，在我笔记本屏幕上显示没有问题，但换到其他分辨率下，错位问题也就随之而来了， 具体原因请看absolute的定位原理：</p>
<blockquote><p>元素框从文档流完全删除，并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭，就好像元素原来不存在一样。元素定位后生成一个块级框，而不论原来它在正常流中生成何种类型的框。</p></blockquote>
<p>所以，这个方法被否决了，Google之后，我发现了另外的一个方法，就是本文标题所述的内容：利用jQuery改变网页元素加载顺序，下面就以副标题处显示嘀咕消息为例来介绍如何利用jQuery来改变网页元素的加载顺序。<span id="more-653"></span></p>
<p>　　首先，在header.php里添加一个id为digu的空白div，例如：</p>
<blockquote><p><code>&lt;div id="digu"&gt;<br />
&lt;/div&gt;</code></p></blockquote>
<p>接着，到index.php的<code>&lt;?php get_footer(); ?&gt;</code>下面再添加一个id为digux的div，在里面加载之前独立保存出来的digu.php，写出来大概是这个样子：</p>
<blockquote><p><code>&lt;div id="digux"&gt;<br />
&lt;?php include_once("digu.php"); ?&gt;<br />
&lt;/div&gt;</code></p></blockquote>
<p>再在下面加入本文最核心的jQ代码：</p>
<blockquote><p><code>&lt;script type="text/javascript"&gt;<br />
$('#digu').html($('#digux').html());<br />
&lt;/script&gt;</code> &gt;</p></blockquote>
<p>也可以写成：</p>
<blockquote><p><code>&lt;script type="text/javascript"&gt;<br />
$('#digux').children().clone().appendTo('#digu');<br />
&lt;/script&gt;</code></p></blockquote>
<p>这段代码基本意思就是把id为digux的内容复制到digu之中，这样我们就成功的利用jQuery改变了副标题处嘀咕消息的加载顺序，因为header.php中的digu是空白层，真正的内容是在index.php的digux之中，所以，浏览器最后加载的是digux层，这样就不会因为外部引用的js导致博客打开缓慢或打开不完全了。</p>
<p>　　忘了说，实现以上效果我们还需在footer.php里加载jQuery框架以及定义digux的CSS为display:none，这就不做过多说明了，之前的文中有过介绍。</p>
<p>　　这篇文章旨在抛砖引玉，此方法适用的范围很大，大家可以尽情发掘使用。作为一个初识jQuery的人来说，我已经被jQuery的强大征服了。</p>
<p>　　文中jQ代码参考自<a rel="nofollow" href="http://leeiio.me/jquery-changes-divsorder/" target="_blank">http://leeiio.me/jquery-changes-divsorder/</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://leo-n.com/modify-html-load-by-jquery.html/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>用jQuery隐藏回头访客资料输入框</title>
		<link>http://leo-n.com/hide-visitor-info-with-jquery.html</link>
		<comments>http://leo-n.com/hide-visitor-info-with-jquery.html#comments</comments>
		<pubDate>Thu, 05 Nov 2009 09:26:39 +0000</pubDate>
		<dc:creator>Leo.N</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[wordpress themes]]></category>

		<guid isPermaLink="false">http://leo-n.com/?p=644</guid>
		<description><![CDATA[　　上一篇文章提到的已经成功发表过评论的评论者在下次评论时仍需重新输入姓名，电邮地址的问题已经查明是由缓存插件Hyper Cache引起的，能找到的解决方法是利用js来解决，但无奈在我博客上测试不成功，只能暂时禁用此插件，同时在木木的指引下，我也发现了一个能提高访客体验度的功能：隐藏回头访客的姓名，电邮，网址输入框。 　　按照木木提供的方法，我再次悲剧的发现用在我博客上并不能正常工作，只能再次Google&#38;百度，找到最后，终于在Xiaorsz的博客中找到个利用jQuery实现的方法，测试后工作正常，下面写点改动的地方。 　　首先，我们要编辑comments.php，在类似于： &#60;input type="text" name="author" id="author" value="&#60;?php echo $comment_author; ?&#62;" size="22" tabindex="1"/&#62; 的评论者姓名输入框代码上方添加： &#60;?php if ( $comment_author != "" ) : ?&#62; &#60;div id="welcome"&#62; &#60;?php printf(__('　Hi!　欢迎回来！&#60;strong&#62;%s&#60;/strong&#62;.'), $comment_author) ?&#62; &#60;/div&#62; &#60;?php endif; ?&#62; 然后再把三个评论者姓名，电邮，网址的代码输入框用&#60;div id="author_info"&#62;&#60;/div&#62;包起来，到此，comments.php修改结束； 　　然后，新建一个名为inputhidden的js文件，把Xiaorsz提供的代码放进去： $(document).ready(function() { //开始 if($('input#author[value]').length&#62;0){ //判断用户框是否有值 $("#author_info").css('display','none'); //将id为author_info的对象的display属性设为none，即隐藏 var change='&#60;span id="show_author_info" style="cursor: pointer; color:#2970A6;"&#62;change &#38;raquo;&#60;/span&#62;'; //定义change，style是定义CSS样式，让他有超链接的效果，color要根据你自己的来改，当然你也可以在CSS中定义#show_author_info来实现，这样是为了不用再去修改style.css而已！ var close='&#60;span id="hide_author_info" [...]]]></description>
			<content:encoded><![CDATA[<p>　　上一篇文章提到的<em>已经成功发表过评论的评论者在下次评论时仍需重新输入姓名，电邮地址的问题</em>已经查明是由缓存插件Hyper Cache引起的，能找到的解决方法是利用js来解决，但无奈在我博客上测试不成功，只能暂时禁用此插件，同时在木木的指引下，我也发现了一个能提高访客体验度的功能：隐藏回头访客的姓名，电邮，网址输入框。</p>
<p>　　按照木木提供的<a href="http://immmmm.com/using-jquery-to-improve-experience.html" target="_blank">方法</a>，我再次悲剧的发现用在我博客上并不能正常工作，只能再次Google&amp;百度，找到最后，终于在Xiaorsz的博客中找到个利用jQuery实现的<a href="http://www.xiaorsz.com/hide-input-box-jquery/" target="_blank">方法</a>，测试后工作正常，下面写点改动的地方。</p>
<p>　　首先，我们要编辑comments.php，在类似于：</p>
<blockquote><p><code>&lt;input type="text" name="author" id="author" value="&lt;?php echo $comment_author; ?&gt;" size="22" tabindex="1"/&gt;</code></p></blockquote>
<p>的评论者姓名输入框代码上方添加：</p>
<blockquote><p><code>&lt;?php if ( $comment_author != "" ) : ?&gt;<br />
&lt;div id="welcome"&gt;<br />
&lt;?php printf(__('　Hi!　欢迎回来！&lt;strong&gt;%s&lt;/strong&gt;.'), $comment_author) ?&gt;<br />
&lt;/div&gt;<br />
&lt;?php endif; ?&gt;</code></p></blockquote>
<p>然后再把三个评论者姓名，电邮，网址的代码输入框用<code>&lt;div id="author_info"&gt;&lt;/div&gt;</code>包起来，到此，comments.php修改结束；</p>
<p>　　然后，新建一个名为inputhidden的js文件，把Xiaorsz提供的代码放进去：</p>
<blockquote><p><code>$(document).ready(function() { //开始<br />
if($('input#author[value]').length&gt;0){ //判断用户框是否有值<br />
$("#author_info").css('display','none'); //将id为author_info的对象的display属性设为none，即隐藏<br />
var change='&lt;span id="show_author_info" style="cursor: pointer; color:#2970A6;"&gt;change &amp;raquo;&lt;/span&gt;'; //定义change，style是定义CSS样式，让他有超链接的效果，color要根据你自己的来改，当然你也可以在CSS中定义#show_author_info来实现，这样是为了不用再去修改style.css而已！<br />
var close='&lt;span id="hide_author_info" style="cursor: pointer;color: #2970A6;"&gt;close &amp;raquo;&lt;/span&gt;'; //定义close<br />
$('#welcome').append(change); //在ID为welcome的对象里添加刚刚定义的change<br />
$('#welcome').append(close); // 添加close<br />
$('#hide_author_info').css('display','none'); //隐藏close<br />
$('#show_author_info').click(function() { //鼠标点击change时发生的事件<br />
$('#author_info').slideDown('slow') //用户输入框向下滑出<br />
$('#show_author_info').css('display','none'); //隐藏change<br />
$('#hide_author_info').css('display','inline'); //显示close<br />
$('#hide_author_info').click(function() { // 鼠标点击close时发生的事件<br />
$('#author_info').slideUp('slow') //用户输入框向上滑<br />
$('#hide_author_info').css('display','none'); //隐藏close<br />
$('#show_author_info').css('display','inline'); })})}}) //显示change</code>
</p></blockquote>
<p>保存文件。</p>
<p>　　接着，我们要载入jQuery框架，因为我之前添加过Willin大师的Ajax嵌套回复，已经在footer.php添加过，所以这一步我可以省略，没有添加过的童鞋可以在footer.php中加入：</p>
<blockquote><p><code>&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"&gt;&lt;/script&gt;</code></p></blockquote>
<p>然后在下面继续添加：</p>
<blockquote><p><code>&lt;?php if ( is_singular() ){ ?&gt;<br />
&lt;script type="text/javascript" src="&lt;?php bloginfo('template_url'); ?&gt;/js/inputhidden.js"&gt;&lt;/script&gt;<br />
&lt;?php } ?&gt;</code></p></blockquote>
<p>这部的先后顺序一定不能错，不然就无法成功。</p>
<p>　　OK，到此用jQuery隐藏回头访客资料输入框的全部操作就完成了，快试试去吧！Enjoy ！</p>
]]></content:encoded>
			<wfw:commentRss>http://leo-n.com/hide-visitor-info-with-jquery.html/feed</wfw:commentRss>
		<slash:comments>80</slash:comments>
		</item>
	</channel>
</rss>

