jQuery DOM對象區別與聯絡

來源:互聯網
上載者:User

標籤:java   沒有   寫法   對象   inner   擷取   div   轉換   兩種   

對兩種物件類型的定義,只要能理解並轉換成自己的說法就可以,不用死板按照資料所寫

jQuery對象(jq對象)其實就是通過jquery類庫選取器獲得的對象(或者說是通過$擷取的對象或者說是通過jquery封裝dom對象後產生的對象(可參照下面的對象轉換理解));

  jquery對象是jquery專屬,可以使用jquery裡面的方法,但不能使用dom的方法;

樣本:

  $("#img").attr("src", "test.jpg");其中$("#img")就是jquery對象;

DOM對象(js對象)就是通過傳統方法(javascript)獲得的對象或者說是javascript固有的一些對象操作或者說是通過document獲得的對象;

  DOM對象能使用javascript固有的方法,但不能使用jquery裡面的方法;

樣本:

  document.getElementById("img").src = “test.jpg";其中document.getElementById("img")就是DOM對象;

需要注意的是:$("#img").attr("src", "test.jpg")和document.getElementById("img").src = “test.jpg"效果是一樣的,

但是document.getElementById("img").attr("src", "test.jpg") 或者$("#img").src = “test.jpg"是錯誤的;不要混淆一點是,同一個javascript指令碼裡面可以同時出現jq對象或者js對象,只是沒有轉換對象是不能互相調用不是自己對象的方法;

還有一種情況,就是this的使用,很多人在寫jquery時經常這樣寫:this.attr("src","test.jpg");可是就是出錯,那是因為this是dom對象,而.attr("src","test.jpg")是jquery方法,當然出錯;

如果要解決這個問題,只需將dom對象轉成jquery對象,如:$(this).attr("src","test.jpg");

 

下面就談談jq對象、js對象的轉換及使用

以前我一直認為jquery的$("#id")和document.getElementById("id")得到的結果是一樣的,其實不然,可以做如下測試:

1、alert($("#div"))彈出[object Object]

2、alert(document.getElementById("div"))彈出[object HTMLDivElement]

3、alert($("#div")[0])或者alert($("#div").get(0))彈出[object HTMLDivElement]

 

1、DOM對象轉jquery對象

對於已經是一個dom對象,只需要用$()把dom對象封裝起來即可,如:$(dom對象)

樣本:

  var obj=document.getElementById("id");   //dom對象
  var 
$obj = $(obj);   //轉換成jquery對象

2、jquery對象轉dom對象

有兩種方式(通過索引):[index] 和 .get(index);

1)jquery對象是一個數組對象,可以通過[index]方法得到相應dom對象

樣本:

  var $obj=$("#id");   //jquery對象
  var obj = $obj[0];   //dom對象 也可寫成 var obj=$obj.get(0);

2)jquery本身提供,通過.get(index)方法得到相應的dom對象

樣本:

  var $obj=$("#id");   //jquery對象

  var obj = $obj.get(0);   //dom對象 也可寫成 var obj=$obj[0];

再次強調一下:DOM對象只能能使用javascript固有的方法,但不能使用jquery裡面的方法;同時,jquery對象智能使用jquery的方法,不能使用dom對象方法;

另外以下幾種寫法都是正確的:

$("#id").html();

$("#id").get(0).innerHTML;

$("#id")[0].innerHTML;

 

jQuery DOM對象區別與聯絡

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.