首頁 > web前端 > js教程 > 主體

jQuery之DOM物件與jQuery物件的轉換與區別分析_jquery

WBOY
發布: 2016-05-16 16:21:38
原創
948 人瀏覽過

本文實例分析了DOM物件與jQuery物件的轉換與差異。分享給大家供大家參考。具體分析如下:

jQuery Hello World程式:

$()符號將DOM物件轉換為jQuery物件.
Hello World程式如下:

複製程式碼 程式碼如下:


    Hello jQuery
   
   


$(document).ready與window.onload的比較

先看window.onload:

複製程式碼 程式碼如下:
window.onload = sayHello;
window.onload = sayWorld;
 
function sayHello() {
    alert("Hello");
}
function sayWorld() {
    alert("World");
}

後面的方法會覆蓋掉前面的方法,也即彈泡最後只顯示一個,即World的那個.

如果採用$(document).ready,則方法會串連起來,即先顯示Hello的alert,再顯示World的.

複製程式碼 程式碼如下:
$(document).ready(sayHello);
$(document).ready(sayWorld);
 
function sayHello() {
    alert("Hello");
}
function sayWorld() {
    alert("World");
}

這樣就可以關聯多重方法.
另一個很小的差別,就是ready方法的執行會稍微靠前一點.widow.onload會等待DOM準備好,並且所有綁定結束,而ready只能DOM準備好,其他工作可能還沒有做好.

實例:給每一個超連結物件附加onclick事件

首先,body中加入多個超連結物件:

複製程式碼 程式碼如下:

    test1

    test2

    test3

    test4


要為每個物件添加onclick事件,可以有多種方法:
首先,可以在每個a標籤裡面寫onclick屬性;
其次,可以利用window.onload新增一個方法,取得所有的標籤,統一新增事件,如下:
複製程式碼 程式碼如下:
window.onload = function () {
    var myLinks = document.getElementsByTagName("a");
    for(var i = 0; i         myLinks[i].onclick = function(){
            alert("Hello link: " i);
        }
    }
}

注意,這裡我犯了一個錯誤,我本來以為alert的數目會遞增,結果實際運行的結果是每一個alert都是4.
這是因為js沒有塊級作用域,變數i引用的是for裡的那個,循環後變成了4.也即,onclick事件發生的時候才去取i的值,當然都是4了.
 
下面用jQuery實作這項功能:

複製程式碼 程式碼如下:
$(document).ready(function () {
    $("a").click(function () {
        alert("Hello link from jQuery!");
    });
});

jQuery中的$()符號會獲得頁面當中的所有適當的元素.
所以上面的程式碼隱含了遍歷的過程,給每一個元素都加上了事件處理函數.
click方法是jQuery物件提供的方法.
onclick是DOM物件的屬性.
DOM裡面的很多屬性到jQuery裡面就變成方法.

DOM物件與jQuery物件之間的相互轉換與區別

看一個例子,先加一個p標籤:

複製程式碼 程式碼如下:

Click Me!

先取得一個DOM物件,然後將其轉換為一個jQuery物件:

複製程式碼 程式碼如下:
//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());

也可以先取得一個jQuery物件,再轉換為DOM物件:

複製程式碼 程式碼如下:
//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中$()取得的是一個滿足條件的所有元素的陣列.

小總結:

$("字串")會傳回滿足條件的所有元素的一個陣列,其中:
字串以#開頭,表示id;
字串以.開頭,表示CSS的class名稱;
若非以上兩種情況,則改字串表示標籤名.

$(DOM物件)可以得到一個jQuery物件.

希望本文所述對大家的jQuery程式設計有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板