天天看點

jQuery介紹 DOM對象和jQuery對象的轉換與差別

jQuery介紹和HelloWorld執行個體程式,介紹jQuery的基本用法和元素操作,DOM對象和jQuery對象的互相轉化.

jQuery介紹 DOM對象和jQuery對象的轉換與差別

jQuery介紹

     jQuery: http://jquery.com/

     write less, do more.

jQuery Hello World程式

<script type=“text/javascript” src=“xxx//jquery-x.y.z.js">      

  引入jQuery.存在兩個版本,jquery-x.y.z.min.js是精簡壓縮版,不帶min的是開發版,代碼中的注釋和縮進等都被保留了.

     注意路徑中的”/"需要轉義,即用”//“.

     $()符号将DOM對象轉化為jQuery對象.

     Hello World程式如下:

<html>
<head>
    <title>Hello 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:

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中添加多個超連結對象:

<body>
    <a href="#">test1</a><br>
    <a href="#">test2</a><br>
    <a href="#">test3</a><br>
    <a href="#">test4</a>
</body>      

  要給每個對象添加onclick事件,可以有多種方法:

  首先,可以在每個a标簽裡面寫onclick屬性;

  其次,可以利用window.onload添加一個方法,擷取所有的标簽,統一添加事件,如下:

window.onload = function () {
    var myLinks = document.getElementsByTagName("a");
    for(var i = 0; i < myLinks.length; ++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标簽:

<p id="clickMe">Click Me!</p>      

     先獲得一個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官網:http://jquery.com/

     jQuery API:http://api.jquery.com/

     jQuery UI demos: http://jqueryui.com/demos/

     w3school jQuery教程:http://www.w3school.com.cn/jquery/index.asp

     聖思園張龍老師JavaWeb視訊教程65.

作者: 聖騎士Wind

出處: 部落格園: 聖騎士Wind

Github: https://github.com/mengdd

微信公衆号: 聖騎士Wind

jQuery介紹 DOM對象和jQuery對象的轉換與差別

繼續閱讀