jQuery中$(this)與this的區別

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

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

  例以下面的寫法是正確的:java

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

     若是寫成下面這樣,就會報錯:this

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

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

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

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

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

  其實能夠經過alert查看$(this)與this的不一樣,alert($(this));彈出的結果是[object Object ],alert(this);彈出來的是[object HTMLImageElement]。這裏的Object指的就是jQuery對象,HTMLImageElement 指的是html元素對象。htm

$(this)與this的區別本質上是javascript對象與jQuery對象的區別。固然jQuery對象也能夠轉化爲javascript對象。對象

$(this)[0]==this;

  即這種jQuery對象能夠經過加下標爲0方式轉化成javascript對象,至關於$(this).get(0) == this;用這種get(0)的方式獲取到對象的DOM對象而後就能夠使用相應的DOM方法。blog

相關文章
相關標籤/搜索