$(this),请问jQuery是怎么返回的这个jQuery对象

例如

<div id="box">**</div>$("#box").click(function(){
   $(this).css({color:red})
})

我们知道此时$(this)指的是jq对象,此时console.log($(this))输出[div#box],
请问jQuery在内部是怎么把$(this)和上下文联系起来的
不知道有没有把我的问题描述清楚~~


POPMUISE
浏览 1234回答 2
2回答

梵蒂冈之花

这个和jquery无关吧 = =首先看一下js的事件绑定:注:下面代码中,console.log($(this))&nbsp;使用的是 jquery 的语法&nbsp; &nbsp; document.getElementById('box').addEventListener('click',function(){&nbsp; &nbsp; &nbsp; &nbsp; console.log(this);&nbsp; &nbsp; &nbsp; &nbsp; console.log($(this));&nbsp; &nbsp; });&nbsp; &nbsp; document.getElementById('box').addEventListener('click',clickHandle);&nbsp; &nbsp; function clickHandle(){&nbsp; &nbsp; &nbsp; &nbsp; console.log(this);&nbsp; &nbsp; &nbsp; &nbsp; console.log($(this));&nbsp; &nbsp; }结果很明显,原生js的事件监听中,在事件处理函数里面你输出 this 就是监听事件的dom。jquery无论是 live on bind 本质上还是事件监听,包括click() 因此使用$(this)&nbsp;输出jquery的dom对象很正常。无非你又使用$(this)把dom对象封又装了一次成jquery DOM对象。

GCT1015

首先要理解的是js中函数的this是指向调用这个函数的对象,在jq里面,在一个对象上调用一个方法并引入一个匿名函数作为参数时,jq会将函数中的this指向到其触发的原生节点对象上,这里就比如#box节点。然后$()是jq将原生节点对象包装为jq对象,使其能够使用各类的jq方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery