js選擇物件和jq選擇物件的區別

∩胖小喵喵∩發表於2018-07-09
很多人習慣了使用jq框架,對js原生語法使用較少,在遇到jq選擇物件和js選擇物件的時候往往比較混淆,導致一旦離開了jq或zepto等框架就無法進行開發了,所以這裡和大家介紹下兩者之間的區別。

jQuery物件是通過jQuery 包裝DOM 物件後產生的物件。jQuery 物件是 jQuery 獨有的,其可以使用 jQuery 裡的方法,但是不能使用 DOM 的方法;例如: $("#img").attr("src","test.jpg"); 這裡的 $("#img")就是 jQuery 物件。

DOM物件就是Javascript 固有的一些物件操作。DOM 物件能使用Javascript 固有的方法,但是不能使用 jQuery 裡的方法。例如:document.getElementById("img").src = “test.jpg";這裡的document.getElementById("img") 就是DOM 物件。
$("#img").attr("src","test.jpg"); 和 document.getElementById("img").src = "test.jpg"; 是等價的,也是正確的,但是像下面這樣使用確是錯誤的,例如$("#img").src = "test.jpg" ;或者 document.getElementById("img").attr("src","test.jpg"); 都是錯誤的。
再說一個例子,就是this, 在寫 jQuery 時經常這樣寫: this.attr("src","test.jpg");可是就是出錯,其實this 是DOM物件,而.attr("src","test.jpg") 是 jQuery 方法,所以出錯了。要解決這個問題就要將 DOM物件轉換成 jQuery 物件,例如 $(this).attr("src","test.jpg");

1. DOM 物件轉成 jQuery 物件

對於已經是一個 DOM 物件,只需要用 $() 把DOM物件包裝起來,就可以獲得一個 jQuery 物件了,$(DOM 物件) 注: var是定義變數

如: var v = document.getElementById("v"); //DOM物件
var $v = $(v); //jQuery 物件
轉換後,就可以任意使用 jQuery 的方法。

2. jQuery 物件轉成 DOM 物件

有兩種轉化方法將一個 jQuery 物件轉換成 DOM 物件: [index] 和 .get(index);

(1) jQuery 物件是一個陣列物件,可以通過 [index] 的方法,來得到相應的 DOM 物件。

如: var $v = $("#v"); //jQuery 物件
var v = $v[0]; //DOM 物件
alert(v.checked); //檢測這個checkbox是否被選中

(2) jQuery 本身提供,通過.get(index) 方法得到相應的 DOM 物件

如:var $v = $("#v"); //jQuery 物件
var v = $v.get(0); //DOM物件 ( $v.get()[0] 也可以 )
alert(v.checked); //檢測這個 checkbox 是否被選中
.get(index) 和 eq(index) 類似,不過eq(index)返回的是jQuery物件。
通過以上方法,可以任意的相互轉換 jQuery 物件和 DOM 物件,需要再強調的是: DOM 物件才能使用DOM 中的方法,jQuery 物件是不可以使用DOM中的方法。


相關文章