jQuery中$(this)與this的區別


  經常在寫jQuery的時候分不清this 和 $(this),為了方便起見盡量不用this,只用$(this)。但是今天在別人的代碼的基礎上改一些東西,又遇到了這個this,不得不把它弄明白。

  $(this)相當於jQuery(this),是一個jQuery對象,只能使用jQuery的屬性和方法;而this中存放的是DOM元素,屬於javascirpt中的DOM元素對象,要使用DOM元素對象的屬性和方法。

  例如下面的寫法是正確的:

this.setAttribute('class','test');

     如果寫成下面這樣,就會報錯:

$(this).setAttribute('class','test');

  報錯說undefined,也就是所$(this)沒有被定義。因為setAttribute是DOM對象的方法,而不是jQuery對象的方法。同樣,反過來使用也會報錯。例如:

this.attr('class','test');

  因為attr是jQuery設置屬性值的方法,不能用在DOM元素對象上面,因此這樣寫會報錯。這個時候應該用$(this):

$(this).attr('class','test');

  其實可以通過alert查看$(this)與this的不同,alert($(this));彈出的結果是[object Object ],alert(this);彈出來的是[object HTMLImageElement]。這里的Object指的就是jQuery對象,HTMLImageElement 指的是html元素對象。

$(this)與this的區別本質上是javascript對象與jQuery對象的區別。當然jQuery對象也可以轉化為javascript對象。

$(this)[0]==this;

  即這種jQuery對象可以通過加下標為0方式轉化成javascript對象,相當於$(this).get(0) == this;用這種get(0)的方式獲取到對象的DOM對象然后就可以使用相應的DOM方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM