5
回答
请教一下,jquery里的this和$(this)的区别
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
(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对象呢


                    
举报
落落的月
发帖于5年前 5回/1K+阅

以下是问题补充:

  • @落落的月 :好吧 按了下ctrl+enter自动提交了、、要问的还没写呢$('#test').bind('click',function(){ alert(this) //HtmlInputElement alert($('#test')) //Object alert($(this)) //Object $(this).test(); }) 为什么this是Html元素而$(this)才是jquery对象呢 (5年前)
共有5个答案 最后回答: 5年前

$()这是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对象

--- 共有 1 条评论 ---
落落的月谢谢啦~现在有些明白了 同谢红薯君~ 5年前 回复

引用来自“红薯”的答案

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对象呢

this dom对象

$(this)是jquery对象

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

                 document.getElementById("td") -dom

顶部