- jQuery權(quán)威指南
- 陶國(guó)榮
- 4字
- 2018-12-31 20:09:00
第1章 jQuery開(kāi)發(fā)入門(mén)
本章內(nèi)容
? jQuery概述
? jQuery的簡(jiǎn)單應(yīng)用
? 本章小結(jié)
隨著互聯(lián)網(wǎng)的迅速發(fā)展,Web頁(yè)面得到了廣泛應(yīng)用,但人們的需求已不僅限于頁(yè)面的功能,而更多地注重頁(yè)面展示形式和用戶體驗(yàn)度。JavaScript語(yǔ)言可以很好地滿足程序開(kāi)發(fā)者的需求,幫助程序開(kāi)發(fā)者開(kāi)發(fā)出用戶體驗(yàn)度很高的頁(yè)面,因而越來(lái)越受到廣大程序員的關(guān)注。jQuery是JavaScript庫(kù)中的優(yōu)秀一員,代碼高效、兼容性強(qiáng)等特點(diǎn)使得它近年來(lái)風(fēng)靡全球,越來(lái)越多的開(kāi)發(fā)者癡迷其中。
1.1 jQuery概述
1.1.1 認(rèn)識(shí)jQuery
jQuery是由美國(guó)人John Resig于2006年創(chuàng)建的一個(gè)開(kāi)源項(xiàng)目,隨著被人們熟知,越來(lái)越多的程序高手加入其中,完善并壯大其項(xiàng)目?jī)?nèi)容,如今已發(fā)展成為集JavaScript、CSS、DOM、Ajax于一體的強(qiáng)大框架體系。它的主旨是:以更少的代碼,實(shí)現(xiàn)更多的功能(Write less,do more)。
1.1.2 jQuery基本功能
1.訪問(wèn)和操作DOM元素
使用jQuery庫(kù),可以很方便地獲取和修改頁(yè)面中的某元素,無(wú)論是刪除、移動(dòng)還是復(fù)制某元素,jQuery都提供了一整套方便、快捷的方法,既減少了代碼的編寫(xiě),又大大提高了用戶對(duì)頁(yè)面的體驗(yàn)度;其具體示例,我們將在后面的章節(jié)中陸續(xù)展示。
2. 控制頁(yè)面樣式
通過(guò)引入jQuery,程序開(kāi)發(fā)人員可以很便捷地控制頁(yè)面的CSS文件。瀏覽器對(duì)頁(yè)面文件的兼容性,一直以來(lái)都是頁(yè)面開(kāi)發(fā)者最為頭痛的事,而使用jQuery操作頁(yè)面的樣式卻可以很好地兼容各種瀏覽器。
3. 對(duì)頁(yè)面事件的處理
引入jQuery庫(kù)后,可以使頁(yè)面的表現(xiàn)層與功能開(kāi)發(fā)分離,開(kāi)發(fā)者更多地專注于程序的邏輯與功效;頁(yè)面設(shè)計(jì)者側(cè)重于頁(yè)面的優(yōu)化與用戶體驗(yàn)。然后,通過(guò)事件綁定機(jī)制,可以很輕松地實(shí)現(xiàn)二者的結(jié)合。
4.大量插件在頁(yè)面中的運(yùn)用
在引入jQuery庫(kù)后,還可以使用大量的插件來(lái)完善頁(yè)面的功能和效果,如表單插件、UI插件,這些插件的使用極大地豐富了頁(yè)的展示效果,使原來(lái)使用JavaScript代碼遙不可及的功能通過(guò)插件的引入而輕松地實(shí)現(xiàn)。
5.與Ajax技術(shù)的完美結(jié)合
Ajax的異步讀取服務(wù)器數(shù)據(jù)的方法,極大地方便了程序的開(kāi)發(fā),加深了用戶的頁(yè)面體驗(yàn)度;而引入jQuery庫(kù)后,不僅完善了原有的功能,而且減少了代碼的書(shū)寫(xiě),通過(guò)其內(nèi)部對(duì)象或函數(shù),加上幾行代碼就可以實(shí)現(xiàn)復(fù)雜的功能。
綜上所述,jQuery在頁(yè)面中的功能還有很多,我們將在接下來(lái)的章節(jié)中一一介紹。
1.1.3 搭建jQuery開(kāi)發(fā)環(huán)境
1.下載jQuery文件庫(kù)
在jQuery的官方網(wǎng)站(http://jquery.com)中,下載最新版本的jQuery文件庫(kù),其網(wǎng)站頁(yè)面如圖1-1所示。

圖1-1 jQuery的官方網(wǎng)站
在網(wǎng)站中,選擇大小為24KB的壓縮包,單擊Download(下載)按鈕,便可以將最新版的jQuery框架下載到本地。目前(截止到2010年7月)最新版本為V1.4.2。
2.引入jQuery文件庫(kù)
下載完jQuery框架文件后,并不需要任何安裝,僅需要使用<script>文件導(dǎo)入標(biāo)記,將jQuery框架文件jquery-1.4.2.min.js導(dǎo)入頁(yè)面中即可。假設(shè)該文件下載后保存在項(xiàng)目文件夾Jscript中,那么,在頁(yè)面的<head></head>中加入如下代碼:
<script language="javascript" type="text/javascript" src="Jscript/jquery-1.4.2.min.js"></script>
在頁(yè)面的頭部分,加入上述代碼后,便完成了jQuery框架的引入,就可以開(kāi)始我們的jQuery之旅了。
1.1.4 編寫(xiě)第一個(gè)簡(jiǎn)單的jQuery應(yīng)用
首先,我們來(lái)編寫(xiě)一個(gè)簡(jiǎn)單的程序,參見(jiàn)下面的示例。
示例1-1 編寫(xiě)第一個(gè)簡(jiǎn)單的jQuery程序
(1)功能描述
在頁(yè)面加載時(shí),彈出一個(gè)模式對(duì)話框,顯示“您好,歡迎來(lái)到j(luò)Query世界”字樣,單擊“確定”按鈕后關(guān)閉該窗口。
(2)實(shí)現(xiàn)代碼
新建一個(gè)HTML文件1-1.html,加入如代碼清單1-1所示的代碼。
代碼清單1-1第一個(gè)簡(jiǎn)單的jQuery應(yīng)用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>第一個(gè)簡(jiǎn)單的jQuery程序</title> <script language="javascript" type="text/javascript" src="Jscript/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ alert("您好,歡迎來(lái)到j(luò)Query世界"); }) </script> </head> <body> </body> </html>
在上述文件的代碼中,有一段如下的代碼:
$(document).ready(function(){ //程序段 }) 該段代碼類似于傳統(tǒng)的JavaScript代碼: window.onload=function(){ //程序段 }
雖然上述兩段代碼在功能上可以互換,但它們之間又有許多區(qū)別:
? 執(zhí)行時(shí)間不同:$(document).ready在頁(yè)面框架下載完畢后就執(zhí)行;而window.onload必須在頁(yè)面全部加載完畢(包含圖片下載)后才能執(zhí)行。很明顯,前者的執(zhí)行效率高于后者。
? 執(zhí)行數(shù)量不同:$(document).ready可以重復(fù)寫(xiě)多個(gè),并且每次執(zhí)行結(jié)果不同;而window. onload盡管可以執(zhí)行多個(gè),但僅輸出最后一個(gè)執(zhí)行結(jié)果,無(wú)法完成多個(gè)結(jié)果的輸出。
? $(document).ready(function(){})可以簡(jiǎn)寫(xiě)成$(function(){}),因此與下面的代碼是等價(jià)的。
$(document).ready(function(){ //程序段 })
等價(jià)于
$(function(){ //程序段 })
(3)頁(yè)面效果
HTML文件1-1.html最后實(shí)現(xiàn)的頁(yè)面效果如圖1-2所示。

圖1-2 第一個(gè)jQuery程序運(yùn)行后的頁(yè)面效果
1.1.5 jQuery程序的代碼風(fēng)格
1.“$”美元符的使用
在jQuery程序中,使用最多的莫過(guò)于“$”美元符了,無(wú)論是頁(yè)面元素的選擇、功能函數(shù)的前綴,都必須使用該符號(hào),可以說(shuō)它是jQuery程序的標(biāo)志。
2. 事件操作鏈接式書(shū)寫(xiě)
在編寫(xiě)頁(yè)面某元素事件時(shí),jQuery程序可以使用鏈接式的方式編寫(xiě)該元素的所有事件。為了更好地說(shuō)明該書(shū)寫(xiě)方法的使用,我們通過(guò)一個(gè)示例加以闡述。
示例1-2 jQuery事件的鏈?zhǔn)綄?xiě)法
(1)功能描述
在頁(yè)面中,有一個(gè)<div>標(biāo)記,在該標(biāo)記內(nèi),包含二個(gè)<div>標(biāo)記,一個(gè)為主題,另一個(gè)為內(nèi)容,頁(yè)面首次加載時(shí),被包含的內(nèi)容<div>標(biāo)記是不可見(jiàn)的,當(dāng)用戶單擊主題<div>標(biāo)記時(shí),改變自身的背景色,并將內(nèi)容<div>標(biāo)記顯示出來(lái)。
(2)實(shí)現(xiàn)代碼
新建一個(gè)HTML文件1-2.html,加入如代碼清單1-2所示的代碼。
代碼清單1-2 jQuery事件的鏈?zhǔn)綄?xiě)法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery事件的鏈?zhǔn)綄?xiě)法</title> <script language="javascript" type="text/javascript" src="Jscript/jquery-1.4.2.min.js"></script> <style type="text/css"> .divFrame{width:260px;border:solid 1px #666; font-size:10pt} .divTitle{background-color:#eee;padding:5px} .divContent{padding:5px;display:none} .divCurrColor{ background-color:Red} </style> <script type="text/javascript"> $(function(){ $(".divTitle").click(function(){ $(this).addClass("divCurrColor") .next(".divContent").css("display","block"); }); }); </script> </head> <body> <div class="divFrame"> <div class="divTitle">主題</div> <div class="divContent"> <a href="#">鏈接一</a><br /> <a href="#">鏈接二</a><br /> <a href="#">鏈接三</a> </div> </div> </body> </html>
在上述文件的代碼中,加粗的代碼是鏈?zhǔn)綄?xiě)法。
代碼功能說(shuō)明:當(dāng)用戶單擊Class名稱為"divTitle"的元素時(shí),自身增加名稱為"divCurrColor"的樣式;同時(shí),將接下來(lái)的Class名稱為"divContent"元素顯示出來(lái)。可以看出,兩個(gè)功能的實(shí)現(xiàn)通過(guò)"."符號(hào)鏈接在一起。
(3)頁(yè)面效果
執(zhí)行HTML文件1-2.html,實(shí)現(xiàn)的頁(yè)面效果如圖1-3所示。

圖1-3 DIV元素單擊前后的頁(yè)面對(duì)比效果
1.2 jQuery的簡(jiǎn)單應(yīng)用
1.2.1 jQuery訪問(wèn)DOM對(duì)象
1. 什么是DOM對(duì)象
DOM(Document Object Model,文本對(duì)象模型)的每一個(gè)頁(yè)面都是一個(gè)DOM對(duì)象,通過(guò)傳統(tǒng)的JavaScript方法訪問(wèn)頁(yè)面中的元素,就是訪問(wèn)DOM對(duì)象。
例如:在頁(yè)面中2個(gè)<div>標(biāo)記元素,其代碼如下:
<div id="divTmp">測(cè)試文本</div> <div id="divOut"></div>
通過(guò)下面的JavaScript代碼可以訪問(wèn)DOM對(duì)象和獲取或設(shè)置其內(nèi)容值:
var tDiv=document.getElementById("divTmp");//獲取DOM對(duì)象 var oDiv=document.getElementById("divOut");//獲取DOM對(duì)象 var cDiv=tDiv.innerHTML;//獲取DOM對(duì)象中的內(nèi)容 oDiv.innerHTML=cDiv;//設(shè)置DOM對(duì)象中的內(nèi)容
如果執(zhí)行上面的JavaScript代碼,將在ID為"divOut"的標(biāo)記中顯示ID為"divTmp"的標(biāo)記內(nèi)容。
2. 什么是jQuery對(duì)象
在jQuery庫(kù)中,通過(guò)本身自帶的方法獲取頁(yè)面元素的對(duì)象,我們稱之為jQuery對(duì)象;為了同樣實(shí)現(xiàn)在ID為"divOut"的標(biāo)記中顯示ID為"divTmp"的標(biāo)記內(nèi)容,采用jQuery訪問(wèn)頁(yè)面元素的方法,其實(shí)現(xiàn)的代碼如下:
var tDiv=$("#divTmp");//獲取jQuery對(duì)象 var oDiv=$("#divOut");//獲取jQuery對(duì)象 var cDiv=tDiv.html();//獲取jQuery對(duì)象中的內(nèi)容 oDiv.html(cDiv);//設(shè)置jQuery對(duì)象中的內(nèi)容
通過(guò)代碼的對(duì)比,可以看出jQuery對(duì)象訪問(wèn)方法比DOM對(duì)象訪問(wèn)方法更簡(jiǎn)單、高效,它們都實(shí)現(xiàn)同樣的功能。
1.2.2 jQuery控制DOM對(duì)象
在介紹使用jQuery控制DOM對(duì)象前,先通過(guò)一個(gè)簡(jiǎn)單的示例,說(shuō)明如何用傳統(tǒng)的JavaScript方法訪問(wèn)DOM對(duì)象。
示例1-3 控制DOM對(duì)象
(1)功能描述
在頁(yè)面中,用戶輸入姓名、性別和婚姻狀況,單擊“提交”按鈕后,將獲取到的數(shù)據(jù)信息顯示在頁(yè)面<div>標(biāo)記中。
(2)實(shí)現(xiàn)代碼
新建一個(gè)HTML文件1-3.html,加入如代碼清單1-3所示的代碼。
代碼清單1-3使用傳統(tǒng)的JavaScript方法訪問(wèn)DOM對(duì)象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>控制DOM對(duì)象</title> <style type="text/css"> .divFrame{width:260px;border:solid 1px #666; font-size:10pt} .divTitle{background-color:#eee;padding:5px} .divContent{padding:8px;font-size:9pt} .divTip{width:244px;border:solid 1px #666; padding:8px;font-size:9pt; margin-top:5px;display:none} .txtCss{border:solid 1px #ccc} .divBtn{padding-top:5px} .divBtn .btnCss{border:solid 1px #535353;width:60px} </style> <script type="text/javascript"> function btnClick(){ //獲取文本框的值 var oTxtValue=document.getElementById("Text1").value; //獲取單選框按鈕值 var oRdoValue=(Radio1.checked)?"男":"女"; //獲取復(fù)選框按鈕值 var oChkValue=(Checkbox1.checked)?"已婚":"未婚"; //顯示提示文本元素 document.getElementById("divTip").style.display="block"; //設(shè)置文本元素的內(nèi)容 document.getElementById("divTip").innerHTML=oTxtValue+"<br>" +oRdoValue+"<br>"+oChkValue; } </script> </head> <body> <div class="divFrame"> <div class="divTitle">請(qǐng)輸入如下信息</div> <div class="divContent"> 姓名:<input id="Text1" type="text" class="txtCss"/><br /> 性別:<input id="Radio1" name="rdoSex" type="radio" value="男" />男 <input id="Radio2" name="rdoSex" type="radio" value="女" />女<br /> 婚否:<input id="Checkbox1" type="checkbox" /> <div class="divBtn"><input id="Button1" type="button" value="提交" class="btnCss" onclick="btnClick();" /> </div> </div> </div> <div id="divTip" class="divTip"></div> </body> </html>
在上面的代碼中,使用傳統(tǒng)的JavaScript方法獲取用戶輸入的信息,并保存到變量中,最后通過(guò)document.getElementById("divTip").innerHTML方法顯示所有的數(shù)據(jù)信息。下面將示例1-3中的JavaScript代碼進(jìn)行修改,引入jQuery庫(kù),通過(guò)jQuery中的方法獲取元素的值,并將獲取的數(shù)據(jù)顯示出來(lái)。修改后的JavaScript代碼如下所示:
... <script language="javascript" type="text/javascript" src="Jscript/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function(){ $("#btnSubmit").click(function(){ //獲取文本框的值 var oTxtValue=$("#Text1").val(); //獲取單選框按鈕值 var oRdoValue=$("#Radio1").is (":checked")?"男":"女"; //獲取復(fù)選框按鈕值 var oChkValue=$("#Checkbox1").is (":checked")?"已婚":"未婚"; //顯示提示文本元素和內(nèi)容 $("#divTip").css("display","block").html(oTxtValue+"<br>"+oRdoValue+"<br>"+ oChkValue); }) }) </script> ...
在修改后的JavaScript代碼中,$("#Text1").val()在jQuery庫(kù)中表示獲取ID號(hào)為“Text1”的值;$("#Radio1").is (":checked")表示ID號(hào)為“Radio1”的單選按鈕是否被選中,如果選中,則返回“男”,否則,返回“女”。可以看出,通過(guò)jQuery庫(kù)中的方法訪問(wèn)或控制頁(yè)面中的元素,比使用傳統(tǒng)的JavaScript代碼要簡(jiǎn)潔得多,并且還兼容各種瀏覽器。
(3)頁(yè)面效果
最終實(shí)現(xiàn)的頁(yè)面效果如圖1-4所示。

圖1-4 控制jQuery對(duì)象
1.2.3 jQuery控制頁(yè)面CSS
在jQuery框架中,通過(guò)自帶的JavaScript編程,提供全部的CSS3下的選擇器,開(kāi)發(fā)者可以首先定義自己的樣式文件,然后通過(guò)jQuery中的addClass()方法將該樣式輕松地添加到頁(yè)面指定的某元素中,而不用考慮瀏覽器的兼容性。
下面通過(guò)一個(gè)簡(jiǎn)單的示例來(lái)介紹如何使用jQuery中的toggleClass(className)方法來(lái)實(shí)現(xiàn)頁(yè)面樣式的動(dòng)態(tài)切換功能。
示例1-4 jQuery控制CSS樣式
(1)功能描述
在頁(yè)面中,增加一個(gè)<div>元素標(biāo)記,當(dāng)用戶單擊該元素時(shí),變換其文本內(nèi)容和背景色,再次單擊時(shí),恢復(fù)其初始的內(nèi)容和背景色。
(2)實(shí)現(xiàn)代碼
新建一個(gè)HTML文件1-4.html,加入如代碼清單1-4所示的代碼。
代碼清單1-4 jQuery控制CSS樣式
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery控制CSS樣式</title> <script language="javascript" type="text/javascript" src="Jscript/jquery-1.4.2.min.js"></script> <style type="text/css"> .divDefalut{width:260px;font-size:10pt;padding:5px} .divClick{width:260px;border:solid 1px #666; font-size:10pt;background-color:#eee;padding:5px} </style> <script type="text/javascript"> $(function(){ $(".divDefalut").click(function(){ $(this).toggleClass("divClick").html("點(diǎn)擊后的樣式"); }); }); </script> </head> <body> <div class="divDefalut">點(diǎn)擊前的樣式</div> </body> </html>
(3)頁(yè)面效果
HTML文件1-4.html執(zhí)行后,最終實(shí)現(xiàn)的頁(yè)面效果如圖1-5所示。

圖1-5 jQuery控制CSS
在jQuery庫(kù)中,通過(guò)簡(jiǎn)單的幾行代碼,就可以實(shí)現(xiàn)傳統(tǒng)JavaScript大量代碼完成的功能,節(jié)省開(kāi)發(fā)者的時(shí)間,提高工作效率。
1.3 本章小結(jié)
本章通過(guò)循續(xù)漸進(jìn)的方式,先從jQuery的基礎(chǔ)概念入手,介紹jQuery庫(kù)的下載,引入簡(jiǎn)單應(yīng)用方法;后部分側(cè)重于jQuery控制DOM對(duì)象和頁(yè)面CSS樣式的介紹,通過(guò)一些簡(jiǎn)單的小示例,使讀者對(duì)jQuery在頁(yè)面中的功能應(yīng)用有一個(gè)大致的了解,為下一章節(jié)進(jìn)一步學(xué)習(xí)jQuery庫(kù)的詳細(xì)對(duì)象和方法奠定基礎(chǔ)。
- Spring Cloud Alibaba核心技術(shù)與實(shí)戰(zhàn)案例
- FreeSWITCH 1.8
- 企業(yè)級(jí)Java EE架構(gòu)設(shè)計(jì)精深實(shí)踐
- Getting Started with ResearchKit
- Python編程與幾何圖形
- C語(yǔ)言程序設(shè)計(jì)
- Java EE核心技術(shù)與應(yīng)用
- Learning OpenStack Networking(Neutron)(Second Edition)
- 0 bug:C/C++商用工程之道
- 響應(yīng)式架構(gòu):消息模式Actor實(shí)現(xiàn)與Scala、Akka應(yīng)用集成
- Clojure for Java Developers
- Android Development Tools for Eclipse
- Secret Recipes of the Python Ninja
- PostgreSQL 12 High Availability Cookbook
- ACE技術(shù)內(nèi)幕:深入解析ACE架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理