官术网_书友最值得收藏!

第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ǔ)。

主站蜘蛛池模板: 六安市| 湘阴县| 开平市| 大城县| 曲松县| 舟山市| 柘城县| 常德市| 阆中市| 米脂县| 莆田市| 武平县| 思南县| 科技| 新疆| 武鸣县| 中西区| 汉中市| 宁都县| 临洮县| 家居| 民乐县| 宁强县| 桂平市| 洞口县| 肃北| 射洪县| 长汀县| 筠连县| 榆树市| 当雄县| 砚山县| 沙洋县| 枞阳县| 大宁县| 合阳县| 贡觉县| 介休市| 鄄城县| 孟州市| 东乌|