jquery $(this) 和this的區別

aimiy發表於2018-11-19

首先來看看JQuery中的 $() 這個符號,實際上這個符號在JQuery中相當於JQuery(),即$(this)=jquery();也就是說,這樣可以返回一個jquery物件。那麼,當你在網頁中alert($(`#id`));時,會彈出一個[object Object ],這個object物件,也就是jquery物件了。
那麼,我們再回過頭來說$(this),這個this是什麼呢?假設我們有如下的程式碼:

<input id="jq" type="text" value=1>
$("#jq").click(function(){
alert($(this)); // [object Object ]
alert(this); // [object HTMLInputElement]
console.log($(this)); // r.fn.init [input#jq]
console.log(this); // <input id="jq" type="text" value="1">
console.log(this.value); // 1
console.log($(this).value); // undefined
console.log($(this).children()); // r.fn.init [prevObject: r.fn.init(1)]
console.log(this.children()); // Uncaught TypeError: this.children is not a function
});

也就是說,this返回的是一個html物件,也就是節點,他可以獲取到屬性值,但是html物件不具有function方法,自然會報錯,因此需要使用$(this)才能夠呼叫方法。

相關文章