<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post/4874/</link>
<title><![CDATA[Jquery中的this与$(this)]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Tue, 27 Dec 2011 06:58:34 +0000</pubDate> 
<guid>http://jackxiang.com/post/4874/</guid> 
<description>
<![CDATA[ 
	序言：在使用jquery操作js时，经常整不明白this与$(this)。抽空仔细测试了一把，记录下来以供在忘记的时候拉出来参考参考！<br/>$(this)生成的是什么<br/>$()生成的是什么呢？实际上$()=jquery()，那么也就是说返回的是一个jquery的对象。<br/><br/>题外话：通常我们为了简便直接使用$(),实际上,该函数省略了一个参数context,即$(selector)=$(selector,document).如果指定context，可以指定context为一个dom元素集或者jquery对象。<br/>那么依照，$()返回的是jquery对象这一结论，我们可以得出$(this)得到的是一个jquery对象.我们可以使用万能的alert()方法打印出一个对象：<br/>alert($(&#039;#btn&#039;));显示的结果：<br/>test 该图红色框勾选出来的是一个object，不用考虑，该object自然是jquery的对象咯。也即是说我们用通过$(&#039;#btn&#039;)来调用jquery的方法和属性等。<br/>this代表什么？<br/>this，编程的人都知道this表示上下文所处的这个对象，这个自然是不错的，可是这个对象到底是个什么对象呢？加入js里面也有getType的话返回的值会是什么呢？其实js里面不需要使用getType,因为我们有万能的alert.请看看下面的代码：<br/><textarea name="code" class="html" rows="15" cols="100">
$(&#039;#btn&#039;).bind(&quot;click&quot;,function()&#123;

&nbsp;&nbsp;&nbsp;&nbsp;alert(this); 

&nbsp;&nbsp;&nbsp;&nbsp;alert($(this)); 

&#125;);
</textarea><br/>根据我们的经验（因为$()生成的是jquery的对象嘛），this自然是一个jquery的对象咯。可是我们看看返回的结果：<br/>test1返回的是什么？【object HTMLInputElement】——伟大的html对象，嘿嘿。所以我们通常在直接使用this.val()或者直接通过this来调用jquery所特有的方法或属性的时候会报错误：mistake&nbsp;&nbsp;为什么呢？明知故问！html对象当然“不包含属性或方法”了。那么为什么在一个jquery对象的上下文中调用this返回的是一个html对象而不是jquery对象 呢？翻遍jquery的api文档，貌似jquery中并未对this这一关键字进行过特殊“处理”，也就是说这里this是js中的，而不是jquery重新定义了的。so...当然这仅仅是我自己的想法，如果有对此更了解的朋友可以留言更正。而我们再看一下以上代码中alert($(this));的返回，自然是jquery的对象了，在此调用jquery特有的方法和属性，完全没有问题。<br/>结论：<br/>this，表示当前的上下文对象是一个html对象，可以调用html对象所拥有的属性，方法<br/>$(this),代表的上下文对象是一个jquery的上下文对象，可以调用jquery的方法和属性值。 <br/><br/>测试代码：<br/><textarea name="code" class="html" rows="15" cols="100">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;this,$(this)&lt;/title&gt;
&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&quot;&gt;&lt;/script&gt;&nbsp;&nbsp;
&lt;script&gt;!window.jQuery &amp;&amp; document.write(&#039;&lt;script src=&quot;js/jquery-1.4.2.min.js&quot;&gt;&lt;&#92;/script&gt;&#039;)&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/script&gt; 
&lt;script language=&quot;javascript&quot;&gt;
$().ready(&nbsp;&nbsp;function()
&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;$(&#039;#btn&#039;).bind(&quot;click&quot;,function()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert($(&#039;#btn&#039;));//[object Object]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(this); //[object HTMLInputElement]
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert($(this)); //[object Object]
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;); 
&nbsp;&nbsp;&#125;
)
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type=&quot;button&quot; id=&quot;btn&quot;&gt;
&lt;/body&gt;
&lt;/html&gt;


</textarea><br/><br/><br/>来源：http://www.cnblogs.com/iceWolf/archive/2009/08/27/1555138.html<br/><br/><br/><br/>起初以为this和$(this)就是一模子刻出来。但是我在阅读时，和coding时发现,总不是一回事。<br/>What is &quot;this&quot;?<br/>&nbsp;&nbsp;&nbsp;&nbsp;In many object-oriented programming languages, this (or self) is a keyword which can be used in instance methods to refer to the object on which the currently executing method has been invoked.<br/>$(&quot;#textbox&quot;).hover( <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function() &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.title = &quot;Test&quot;; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fucntion() &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.title = &quot;OK”; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; <br/>);<br/>这里的this其实是一个Html 元素(textbox)，textbox有text属性，所以这样写是完全没有什么问题的。<br/>但是如果将this换成$(this)就不是那回事了，Error--报了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;Error Code：<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#textbox&quot;).hover(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).title ＝ &quot;Test&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).title = &quot;OK&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/>这里的$(this)是一个JQuery对象，而jQuery对象沒有title 属性，因此这样写是错误的。<br/>JQuery拥有attr()方法可以get/set DOM对象的属性，所以正确的写法应该是这样：<br/>&nbsp;&nbsp;&nbsp;&nbsp;正确的代码：<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#textbox&quot;).hover(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).attr(’title’, ‘Test’);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).attr(’title’, ‘OK’);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;);<br/>使用JQuery的好处是它包裝了各种浏览器版本对DOM对象的操作，因此统一使用$(this)而不再用this应该是比较不错的选择。<br/>来源：http://www.cnblogs.com/RuiLei/archive/2009/08/20/1550804.html
]]>
</description>
</item><item>
<link>http://jackxiang.com/post/4874/#blogcomment63719</link>
<title><![CDATA[[评论] Jquery中的this与$(this)]]></title> 
<author>不知道 &lt;84158485@qq.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Wed, 02 May 2012 15:37:14 +0000</pubDate> 
<guid>http://jackxiang.com/post/4874/#blogcomment63719</guid> 
<description>
<![CDATA[ 
	第一段解释错了，第二段说的没错但是没有解释到位，其实很简单，对于每一个jquery选择器时间参数中的function()在被调用是都会被赋值成为当前选择器所选的dom对象的一个方法，所以this是指调用他的那个dom对象。OK了。
]]>
</description>
</item>
</channel>
</rss>