请教一下,jquery里的this和$(this)的区别

落落的月 发布于 2012/11/24 22:22
阅读 1K+
收藏 1
(function($){
	$.fn.test=function(){
		alert("a");
	};
})(jQuery);
$('#test').bind('click',function(){ 
alert(this); //HtmlInputElement 
alert($('#test')); //Object 
alert($(this)); //Object 
$(this).test(); 
}) 
为什么this 是HtmlInputElement ,$(this)才是jquery对象呢


                

以下是问题补充:

@落落的月:好吧 按了下ctrl+enter自动提交了、、要问的还没写呢$('#test').bind('click',function(){ alert(this) //HtmlInputElement alert($('#test')) //Object alert($(this)) //Object $(this).test(); }) 为什么this是Html元素而$(this)才是jquery对象呢 (2012/11/24 22:26)
加载中
1
朱__朱
朱__朱

$()这是jQuery的一个函数,也是最核心最基本的函数

功能一:传入一个选择器字符串,获得这个选择器对应的dom内容,保存在[]中,也就是俗称的jQuery对象。例如

$('#id')  $('.class') $('tag')

功能二传入一个匿名函数,例如

$(function(){})//这个匿名函数在网页载入完成后开始执行

功能三:将javascript对象包装成为jQuery对象。例如

$(this)

$({a:1,b:2,c:3})

$(document.getElementById('idstr'))

this是javascript自身的 语法关键字,它指向一个javascript对象,所以可以使用所指向的目标javascript对象所拥有的方法。

但他自己不是一个普通的变量,所以你无法自己定义一个变量叫this

所以为了使用jQuery对象的方法,你必须传入jQuery函数$(this),包装成为一个可以使用jquery方法的jquery对象

落落的月
落落的月
谢谢啦~现在有些明白了 同谢红薯君~
0
红薯
红薯

this 是 JavaScript 的方法,$(this) 是对 this 的 jQuery 封装

你可以对 $(this) 调用 jQuery 的方法

0
落落的月
落落的月

引用来自“红薯”的答案

this 是 JavaScript 的方法,$(this) 是对 this 的 jQuery 封装

你可以对 $(this) 调用 jQuery 的方法

我看jquery的源码里 bind方法这么写的 

bind: function( types, data, fn ) {

return this.on( types, null, data, fn );  

},

这里的this应该是个jquery对象吧。。我上面的this也是在bind方法里的 ,为什么不是jquery对象呢

0
風一樣的男子
風一樣的男子

this 是HTMLDocument/javascript对象

$(this)是jquery对象

0
唐代de豆腐
唐代de豆腐

this dom对象

$(this)是jquery对象

好比这样》$("#td") -jquery 对象

                 document.getElementById("td") -dom

返回顶部
顶部