亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

$(this),請問jQuery是怎么返回的這個jQuery對象

$(this),請問jQuery是怎么返回的這個jQuery對象

POPMUISE 2018-07-20 19:16:09
例如<div id="box">**</div>$("#box").click(function(){    $(this).css({color:red}) })我們知道此時$(this)指的是jq對象,此時console.log($(this))輸出[div#box],請問jQuery在內部是怎么把$(this)和上下文聯系起來的不知道有沒有把我的問題描述清楚~~
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

這個和jquery無關吧 = =

首先看一下js的事件綁定:

注:下面代碼中,console.log($(this)) 使用的是 jquery 的語法

    document.getElementById('box').addEventListener('click',function(){

        console.log(this);

        console.log($(this));

    });

    document.getElementById('box').addEventListener('click',clickHandle);

    function clickHandle(){

        console.log(this);

        console.log($(this));

    }

https://img1.sycdn.imooc.com//5b55e18b000134c002840083.jpg

結果很明顯,原生js的事件監聽中,在事件處理函數里面你輸出 this 就是監聽事件的dom。

jquery無論是 live on bind 本質上還是事件監聽,包括click() 因此使用$(this) 輸出jquery的dom對象很正常。無非你又使用$(this)把dom對象封又裝了一次成jquery DOM對象。

查看完整回答
反對 回復 2018-07-23
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

首先要理解的是js中函數的this是指向調用這個函數的對象,在jq里面,在一個對象上調用一個方法并引入一個匿名函數作為參數時,jq會將函數中的this指向到其觸發的原生節點對象上,這里就比如#box節點。
然后$()是jq將原生節點對象包裝為jq對象,使其能夠使用各類的jq方法。

查看完整回答
反對 回復 2018-07-23
  • 2 回答
  • 0 關注
  • 1259 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號