本文實(shí)例分析了DOM對(duì)象和jQuery對(duì)象的轉(zhuǎn)換與區(qū)別。分享給大家供大家參考。具體分析如下:
長陽ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
jQuery Hello World程序:
script type="text/javascript" src="xxx//jquery-x.y.z.js"
引入jQuery.存在兩個(gè)版本,jquery-x.y.z.min.js是精簡壓縮版,不帶min的是開發(fā)版,代碼中的注釋和縮進(jìn)等都被保留了.
注意路徑中的"/"需要轉(zhuǎn)義,即用"http://".
$()符號(hào)將DOM對(duì)象轉(zhuǎn)化為jQuery對(duì)象.
Hello World程序如下:
復(fù)制代碼 代碼如下:
html
head
titleHello jQuery/title
script type="text/javascript" src="libs//jquery-1.11.2.js"/script
script type="text/javascript"
$(document).ready(function () {
alert("Hello World");
});
/script
/head
body
/body
/html
$(document).ready和window.onload的比較
首先看window.onload:
復(fù)制代碼 代碼如下:
window.onload = sayHello;
window.onload = sayWorld;
function sayHello() {
alert("Hello");
}
function sayWorld() {
alert("World");
}
后面的方法會(huì)覆蓋掉前面的方法,也即彈泡最后只顯示一個(gè),即World的那個(gè).
如果采用$(document).ready,則方法會(huì)串聯(lián)起來,即先顯示Hello的alert,再顯示W(wǎng)orld的.
復(fù)制代碼 代碼如下:
$(document).ready(sayHello);
$(document).ready(sayWorld);
function sayHello() {
alert("Hello");
}
function sayWorld() {
alert("World");
}
這樣就可以關(guān)聯(lián)多個(gè)方法.
另一個(gè)很小的差別,就是ready方法的執(zhí)行會(huì)稍微靠前一點(diǎn).widow.onload會(huì)等待DOM準(zhǔn)備好,并且所有綁定結(jié)束,而ready只能DOM準(zhǔn)備好,其他工作可能還沒有做好.
實(shí)例:給每一個(gè)超鏈接對(duì)象附加onclick事件
首先,body中添加多個(gè)超鏈接對(duì)象:
復(fù)制代碼 代碼如下:
body
a href="#"test1/abr
a href="#"test2/abr
a href="#"test3/abr
a href="#"test4/a
/body
要給每個(gè)對(duì)象添加onclick事件,可以有多種方法:
首先,可以在每個(gè)a標(biāo)簽里面寫onclick屬性;
其次,可以利用window.onload添加一個(gè)方法,獲取所有的標(biāo)簽,統(tǒng)一添加事件,如下:
復(fù)制代碼 代碼如下:
window.onload = function () {
var myLinks = document.getElementsByTagName("a");
for(var i = 0; i myLinks.length; ++i){
myLinks[i].onclick = function(){
alert("Hello link: " + i);
}
}
}
注意,這里我犯了一個(gè)錯(cuò)誤,我本來以為alert的數(shù)目會(huì)遞增,結(jié)果實(shí)際運(yùn)行的結(jié)果是每一個(gè)alert都是4.
這是因?yàn)閖s沒有塊級(jí)作用域,變量i引用的是for里的那個(gè),循環(huán)后變成了4.也即,onclick事件發(fā)生的時(shí)候才去取i的值,當(dāng)然都是4了.
下面用jQuery實(shí)現(xiàn)這一功能:
復(fù)制代碼 代碼如下:
$(document).ready(function () {
$("a").click(function () {
alert("Hello link from jQuery!");
});
});
jQuery中的$()符號(hào)會(huì)獲得頁面當(dāng)中的所有合適的元素.
所以上面的代碼隱含了遍歷的過程,給每一個(gè)元素都加上了事件處理函數(shù).
click方法是jQuery對(duì)象提供的方法.
onclick是DOM對(duì)象的屬性.
DOM里面的很多屬性到j(luò)Query里面就變成了方法.
DOM對(duì)象和jQuery對(duì)象之間的相互轉(zhuǎn)換與區(qū)別
看一個(gè)例子,首先加一個(gè)p標(biāo)簽:
復(fù)制代碼 代碼如下:
p id="clickMe"Click Me!/p
先獲得一個(gè)DOM對(duì)象,然后將其轉(zhuǎn)換為一個(gè)jQuery對(duì)象:
復(fù)制代碼 代碼如下:
//Part 1: DOM -- jQuery
//DOM object:
var pElement = document.getElementsByTagName("p")[0];
alert("DOM pElement: " + pElement.innerHTML);
//Convert DOM object to jQuery object:
var pElementjQuery = $(pElement);
alert("jQuery pElementjQuery: " + pElementjQuery.html());
也可以先獲得一個(gè)jQuery對(duì)象,再將其轉(zhuǎn)換為DOM對(duì)象:
復(fù)制代碼 代碼如下:
//Part 2: jQuery -- DOM
//jQuery object array:
var clickMejQuery = $("#clickMe");
//Convert jQuery object to DOM object (2 ways):
//way 1:
var domClickMe1 = clickMejQuery[0];
alert("dom1: " + domClickMe1.innerHTML);
//way 2:
var domClickMe2 = clickMejQuery.get(0);
alert("dom2: " + domClickMe2.innerHTML);
再次注意:jQuery中$()獲取的是一個(gè)滿足條件的所有元素的數(shù)組.
小總結(jié):
$("字符串")會(huì)返回滿足條件的所有元素的一個(gè)數(shù)組,其中:
字符串以#開頭,表示id;
字符串以.開頭,表示CSS的class名;
若非以上兩種情況,則改字符串表示標(biāo)簽名.
$(DOM對(duì)象)可以得到一個(gè)jQuery對(duì)象.
判斷一個(gè)對(duì)象是否為jquery對(duì)象可以用 obj instanceof jQuery
例如:
var obj = $("div");
if(obj instanceof jQuery){
alert("這是一個(gè)jQuery對(duì)象");
}else{
alert("這是一個(gè)其它對(duì)象")
}
$(".otherWeek").each(function(){
console.info(this instanceof jQuery); //false
console.info($(this) instanceof jQuery); //true
})
jQuery對(duì)象和DOM對(duì)象使用說明,需要的朋友可以參考下。
1.jQuery對(duì)象和DOM對(duì)象
第一次學(xué)習(xí)jQuery,經(jīng)常分辨不清哪些是jQuery對(duì)象,哪些是 DOM對(duì)象,因此需要重點(diǎn)了解jQuery對(duì)象和DOM對(duì)象以及它們之間的關(guān)系.
DOM對(duì)象,即是我們用傳統(tǒng)的方法(javascript)獲得的對(duì)象,jQuery對(duì)象即是用jQuery類庫的選擇器獲得的對(duì)象;
復(fù)制代碼 代碼如下:
var domObj = document.getElementById("id"); //DOM對(duì)象
var $obj = $("#id"); //jQuery對(duì)象;
jQuery對(duì)象就是通過jQuery包裝DOM對(duì)象后產(chǎn)生的對(duì)象,它是jQuery獨(dú)有的。如果一個(gè)對(duì)象是jQuery對(duì)象,那么就可以使用jQuery里的方法,例:
$("#foo").html(); //獲取id為foo的元素內(nèi)的html代碼,html()是jQuery特有的方法;
上面的那段代碼等同于:
document.getElementById("foo").innerHTML;
注意:在jQuery對(duì)象中無法使用DOM對(duì)象的任何方法。
例如$("#id").innerHTML 和$("#id").checked之類的寫法都是錯(cuò)誤的,可以用$("#id").html()和$("#id").attr ("checked")之類的 jQuery方法來代替。同樣,DOM對(duì)象也不能使用jQuery方法。學(xué)習(xí)jQuery開始就應(yīng)當(dāng)樹立正確的觀念,分清jQuery對(duì)象和DOM對(duì)象之間的區(qū)別,之后學(xué)習(xí) jQuery就會(huì)輕松很多的。
2.jQuery對(duì)象和DOM對(duì)象的互相轉(zhuǎn)換
在上面第一點(diǎn)說了,jquery對(duì)象和dom對(duì)象是不一樣的!比如jquery對(duì)象不能使用dom的方法,dom對(duì)象不能使用jquery方法,那假如我 jquery沒有封裝我要的方法,那能怎么辦呢?
這時(shí)我們可以將jquer對(duì)象轉(zhuǎn)換成dom對(duì)象
jquery對(duì)象轉(zhuǎn)換成 dom對(duì)象
jquery提供了兩種方法將一個(gè)jquery對(duì)象轉(zhuǎn)換成一個(gè)dom對(duì)象,即[index]和get(index)。可能有人會(huì)覺得奇怪,怎么是用下標(biāo)呢,沒錯(cuò),jquery對(duì)象就是一個(gè)數(shù)組對(duì)象.
下面代碼將演示一個(gè)jquery對(duì)象轉(zhuǎn)換成dom對(duì)象,再使用dom對(duì)象的方法
復(fù)制代碼 代碼如下:
var $cr=$("#cr"); //jquery對(duì)象
var cr = $cr[0]; //dom對(duì)象 也可寫成 var cr=$cr.get(0);
alert(cr.checked); //檢測(cè)這個(gè)checkbox是否給選中
dom對(duì)象轉(zhuǎn)換成jquery對(duì)象
對(duì)于一個(gè)dom對(duì)象,只需要用$()把dom對(duì)象包裝起來,就可以獲得一個(gè)jquery對(duì)象了,方法為$(dom對(duì)象);
復(fù)制代碼 代碼如下:
var cr=document.getElementById("cr"); //dom對(duì)象
var $cr = $(cr); //轉(zhuǎn)換成jquery對(duì)象
轉(zhuǎn)換后可以任意使用jquery中的方法了.
通過以上的方法,可以任意的相互轉(zhuǎn)換jquery對(duì)象和dom對(duì)象.
最后再次強(qiáng)調(diào),dom對(duì)象才能使用dom中的方法,jquery對(duì)象不可以使用dom中的方法,但 jquery對(duì)象提供了一套更加完善的工具用于操作dom,關(guān)于jquery的dom操作將在后面的文章進(jìn)行詳細(xì)講解.
ps: 平時(shí)用到的jquery對(duì)象都是通過$()函數(shù)制造出來的,$()函數(shù)就是一個(gè)jquery對(duì)象的制造工廠.
建議:如果獲取的對(duì)象是 jquery對(duì)象,那么在變量前面加上$,這樣方便容易識(shí)別出哪些是jquery對(duì)象,例如:
var $variable = jquery對(duì)象;
如果獲取的是dom對(duì)象,則定義如下:
var variable = dom對(duì)象
不管是 js 還是 jQuery,獲取對(duì)象的方式無非幾種:
1、通過 ID;
2、通過 css 類名;
3、通過 tag 標(biāo)簽名;
4、通過通配符選擇;
但是在 jQuery 里面,由這幾種方式衍生出了很多用法,在寫法上也有很多技巧,要一項(xiàng)一項(xiàng)列出來去詳細(xì)說,那可真是有點(diǎn)費(fèi)勁了;
不過官方有文檔說明:網(wǎng)頁鏈接