jQuery、DOM對象傻傻分不清楚

來源:互聯網
上載者:User

標籤:jquery   dom   

        初學jQuery時,經常分辨不清楚哪些是jQuery對象,哪些是DOM對象。這是十分不好的現象。必須明確區分何為jQuery對象、何為DOM對象,對於後續的學習、理解才更方便。

        先從DOM對象開始,之後在談談jQuery對象(jq對象基於DOM對象)。

DOM、DOM對象

       DOM(Document Object Model,文件物件模型),DOM是W3C的標準。定義了訪問HTML和XML文檔的標準。

       文件物件模型是中立於平台和語言的介面,允許程式和指令碼動態訪問和更新文檔的內容、結構以及樣式,更具體來說就是我們可以通過js、jQuery代碼動態更新某個html元素的樣式、屬性等。

       W3C DOM標準分為3部分:

             核心DOM-針對任何結構化文檔的標準模型。

             XML DOM-針對XML文檔的標準模型。

             HTML DOM-針對HTML文檔的標準模型。

        這裡我們關注的是HTML DOM以及其是如何擷取、修改、添加或刪除html元素(DOM對象)的。

DOM節點       

       根據W3C的HTML DOM標準,HTML文檔中的所有內容都是節點:

       1、整個文檔是一個文檔節點

       2、每個HTML元素是一個元素節點

       3、每個HTML 屬性是一個屬性節點

       4、注釋是注釋節點

HTML DOM節點樹

       HTML DOM將HTML文檔視作樹結構。這種結構成為節點樹:

       一個執行個體:

        關於DOM的介紹就這麼多了,詳細瞭解的話可查閱W3CSCHOOL手冊。

 DOM對象

        簡單的來說通過JavaScript中的getElementsByTagName或者getElementById來擷取元素節點,得到的DOM元素就是DOM對象。DOM對象可以使用JavaScript中的方法,簡單一實例:

var obj = document.getElementById("id");//擷取DOM對象var ObjHTML = obj.innerHTML;                //使用js方法

jQuery對象

       jQuery對象就是通過jQuery封裝DOM對象所產生的對象。

       需注意的是jQuery對象是jQuery專屬的。如果一個對象是jQuery對象,那麼就可以使用jQuery裡的方法。

       一個簡單的例子:

$("#foo").html();   //擷取id為foo的元素內的html代碼.html()為jQuery裡的方法

       該代碼等價於:

document.getElementById("id").innerHTML

相互轉換

       核心提示:jQuery選取器得到的jquery對象和標準的DOM對象是兩種不同的對象,jquery對象不能使用DOM對象的屬性方法。同樣的DOM對象也不能使用jquery對象的方法、屬性。

       不過前面瞭解到,jquery對象本來就是DOM對象封裝而來的,那麼兩者肯定是能夠進行轉換的。

       在討論jQuery對象和DOM對象的相互轉換之前,先約定好定義變數的風格。jquery對象在前面加上$,例如:

var $test = jQuery 對象;        //jquery變數var test = DOM 對象;           //dom變數

jQuery對象->DOM對象

        jQuery對象是不能使用DOM中的方法的,但是如果對jQuery對象的方法不熟悉,或者jQuery對象沒有封裝想要的方法,不得不使用DOM對象的時候,可以通過以下兩種方式將jQuery對象轉換為DOM對象。

       (1) jQuery對象是一個數組對象,可以通過[index]得到相應的DOM對象。

var $vars = $("#vars");           //jQuery對象var test = $vars[0];               //DOM對象console.info(test.checked);    //檢查該對象是否選中

      (2) 通過jQuery本身提供的get(index)方法返回DOM對象。

var $vars = $("#vars");           //jQuery對象var test = $vars.get(0);             //DOM對象console.info(test.checked);    //檢查該對象是否選中

DOM對象->jQuery對象

      對於一個DOM對象,只需要用$()將DOM對象封裝起來就可以轉換為jQuery對象了。

var cr = document.getElementById("id");     //DOM對象var $cr = $(cr);                            //jQuery對象

       轉換後,可以任意使用jQuery中的方法。

       通過以上方法可以實現DOM對象和jQuery對象的相互轉換,但是一般情況下jQuery對象提供了一套更加完善的工具用於操作DOM,因此優選使用jQuery對象操作DOM是一個不錯的選擇。

樣本
<html><head>    <title>jQuery對象和DOM對象</title>    <script src="js/jquery-1.9.1.js"></script>    <style type="text/css">        body {            text-align: center;        }    </style>    <script>/*使用原生js代碼判斷複選框是否被選中*/$(function(){var $cr=$("#cr");var cr = $cr.get(0);$cr.on('click',function(){if(cr.checked){console.info("感謝您的支援,你可以繼續操作!");}});});/*使用jQuery的方式判斷複選框是否被選中*/$(function(){   var $cr = $("#cr");$cr.on('click',function(){if($cr.is(":checked")){alert("通過jQuery方式選中");}});});    </script></head><body>    <input type="checkbox" id="cr"/>    <label for="cr">我同意該服務條款</label></body></html>

         控制台輸出js選中,並彈出jquery選中的資訊。


     

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.