$(this) 与 this 区别 (转)
如果你要使用html元素本身的属性或方法就需要使用this,如果你要使用jQuery包装后的方法或属性就要$(this),一般则有如下的关系.
$(this)[0] == this;上文的代码是要使用this的地方是要调用表单form的有reset方法,而这一方法jQuery没有包装支持,所以才有this.reset(),也可以使用$(this)[0].reset();
关于什么时候使用二者?可以看如下例子:
[html]
< a href="http://segmentfault.com/q/1010000000125418" target="_blank" data-id="1010000000125418">jQuery</a>
<a href="http://segmentfault.com/q/1010000000125418" target="_blank" data-id="1010000000125418">jQuery</a>
[javascript] view plaincopyprint?
$('a').click(function(){
this.innerHTM==$(this).html()=='jQuery';//三者是一样的.
this.getAttribute('href')==this.href==$(this).attr('href')//三者是一样的;
this.getAttribute('target')==this.target==$(this).attr('target')//三者是一样的;
this.getAttribute('data-id')==$(this).attr('data-id')//二者是一样的;
});
$('a').click(function(){
this.innerHTM==$(this).html()=='jQuery';//三者是一样的.
this.getAttribute('href')==this.href==$(this).attr('href')//三者是一样的;
this.getAttribute('target')==this.target==$(this).attr('target')//三者是一样的;
this.getAttribute('data-id')==$(this).attr('data-id')//二者是一样的;
});
从以上代码可以看出二者的差异.
或者 简单理解:
this是html元素对象吧~
$(this)成为jQuery对象
或者 :
this 是 JavaScript 中的关键字。
$(this) 可以认为是用 jQuery 包装过 JavaScript 中的 this,包装后 $(this) 就会继承 jQuery 的方法。
-------------------------------------------
$("this").是不存在的。this 指本对象其实是JavaScript的操作,$(this)是jquery对象,只能用jquery方法。
---------------------this 、 $(this) 到底代表什么 ? --------------------------------------------------
它指代函数对象、jquery对象、还是dom对象、还是html?
this 具体是什么,由 this 所在位置而定。
通常情况下
function a(sId) {
this.id = sId;
//函数内部的 this 是这个函数的实例
}
用 prototype 扩展摸个对象的时候
Array.prototype.clear = function() {
// 这儿的 this 指的是数组本身
this.length = 0;
};
jQuery 的 this 一般指当前的 dom 对象。
$(DOM对象) 返回的是 jQuery 对象,这个对象可以用 jQuery 的各种函数。
$('body a').click(function(){
var url = $(this).attr('href');
//下面这句话其实已经回答了你的问题,Firebug 的 Console 里面会显示 this 的具体内容
console.log(this);
});