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 是否被選中
通過以上方法,可以任意的相互轉換 jQuery 對象和 DOM 對象,需要再強調的是: DOM 對象才能使用DOM 中的方法,jQuery 對象是不可以使用DOM中的方法。