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.
