相信很多剛接觸jQuery的人,很多都會(huì)對(duì)$(this)和this的區(qū)別模糊不清,那么這兩者有什么區(qū)別呢?
this是JavaScript中的關(guān)鍵字,指的是當(dāng)前的上下文對(duì)象,簡(jiǎn)單的說就是方法/屬性的所有者
下面例子中,imooc是一個(gè)對(duì)象,擁有name屬性與getName方法,在getName中this指向了所屬的對(duì)象imooc
var imooc = { name:"慕課網(wǎng)", getName:function(){ //this,就是imooc對(duì)象 return this.name; } } imooc.getName(); //慕課網(wǎng)
當(dāng)然在JavaScript中this是動(dòng)態(tài)的,也就是說這個(gè)上下文對(duì)象都是可以被動(dòng)態(tài)改變的(可以通過call,apply等方法),具體的大家可以查閱相關(guān)資料
同樣的在DOM中this就是指向了這個(gè)html元素對(duì)象,因?yàn)閠his就是DOM元素本身的一個(gè)引用
假如給頁面一個(gè)P元素綁定一個(gè)事件:
p.addEventListener('click',function(){ //this === p //以下兩者的修改都是等價(jià)的 this.style.color = "red"; p.style.color = "red"; },false);
通過addEventListener綁定的事件回調(diào)中,this指向的是當(dāng)前的dom對(duì)象,所以再次修改這樣對(duì)象的樣式,只需要通過this獲取到引用即可
this.style.color = "red"
但是這樣的操作其實(shí)還是很不方便的,這里面就要涉及一大堆的樣式兼容,如果通過jQuery處理就會(huì)簡(jiǎn)單多了,我們只需要把this加工成jQuery對(duì)象
換成jQuery的做法:
$('p').click(function(){ //把p元素轉(zhuǎn)化成jQuery的對(duì)象 var $this= $(this) $this.css('color','red') })
通過把$()方法傳入當(dāng)前的元素對(duì)象的引用this,把這個(gè)this加工成jQuery對(duì)象,我們就可以用jQuery提供的快捷方法直接處理樣式了
總體:
this,表示當(dāng)前的上下文對(duì)象是一個(gè)html對(duì)象,可以調(diào)用html對(duì)象所擁有的屬性和方法。
$(this),代表的上下文對(duì)象是一個(gè)jquery的上下文對(duì)象,可以調(diào)用jQuery的方法和屬性值。
在代碼編輯器中第29行填寫相應(yīng)代碼
$(this)
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)