Jquery實戰1:概述,環境準備及入門實例

来源:http://www.cnblogs.com/shizongger/archive/2017/01/19/6306000.html
-Advertisement-
Play Games

jQuery是一套跨瀏覽器的JavaScript函數庫,簡化HTML與JavaScript之間的操作。由約翰·雷西格(John Resig)在2006年1月的BarCamp NYC上發佈第一個版本。目前是由Dave Methvin領導的開發團隊進行開發。全球前10,000個訪問最高的網站中,有65% ...


jQuery是一套跨瀏覽器的JavaScript函數庫,簡化HTML與JavaScript之間的操作。由約翰·雷西格(John Resig)在2006年1月的BarCamp NYC上發佈第一個版本。目前是由Dave Methvin領導的開發團隊進行開發。全球前10,000個訪問最高的網站中,有65%使用了jQuery,是目前最受歡迎的JavaScript函數庫。

jQuery的特點:

  • Write less, Do more。
  • jQuery is designed to change the way that you write JavaScript。
  • 支持各種主流瀏覽器,包括IE,FireFox2以上,Safari2以上和Opera9以上的版本。
  • 以強大的CSS選擇器為基礎,幾乎所有的操作都先使用選擇器查找DOM對象,然後對其進行各種操作。
  • 屏蔽瀏覽器差異,對DOM的操作提供了方便的擴展,易用的事件處理API和動畫API。
  • 強大的插件機制。

版本發佈

JQuery目前分成1.x版與2.x版,這兩種版本發佈,後者不再支持IE 6/7/8,前者通過jQuery Migrate plugin與先前版本保持相容。














































































































































































































































































































發佈日期 版本號碼 備註
2006年8月26日 1.0 最初的穩定版本
2006年8月31日 1.0.1
2006年10月9日 1.0.2
2006年10月27日 1.0.3
2006年12月12日 1.0.4 Last 1.0 bug fix
2007年1月14日 1.1
2007年1月22日 1.1.1
2007年2月27日 1.1.2
2007年7月1日 1.1.3
2007年7月5日 1.1.3.1
2007年8月24日 1.1.4
2007年9月10日 1.2 jQuery 1.2版以後預設取消XPath支持,改為插件支持
2007年9月16日 1.2.1
2008年1月15日 1.2.2
2008年2月8日 1.2.3
2008年5月19日 1.2.4
2008年5月21日 1.2.5 修正1.2.4版的bug
2008年5月24日 1.2.6
2009年1月14日 1.3 Sizzle選擇器引擎導入至核心,移除過時API[11]
2009年1月21日 1.3.1
2009年2月20日 1.3.2
2010年1月14日 1.4
2010年1月25日 1.4.1
2010年2月19日 1.4.2
2010年10月16日 1.4.3
2010年11月11日 1.4.4
2011年1月31日 1.5
2011年2月24日 1.5.1
2011年3月31日 1.5.2
2011年5月3日 1.6 改善attr()與val()的效能
2011年5月12日 1.6.1
2011年6月30日 1.6.2
2011年9月1日 1.6.3
2011年9月12日 1.6.4
2011年11月3日 1.7 移除過時API[12]
2011年11月21日 1.7.1
2012年3月21日 1.7.2
2012年8月9日 1.8.0 Sizzle選擇器引擎重寫,提高動畫與$(html, props)更具彈性.,移除過時API[13]
2012年8月30日 1.8.1
2012年9月20日 1.8.2
2012年11月13日 1.8.3
2013年1月15日 1.9.0 移除過時API[14]
2013年2月4日 1.9.1
2013年5月23日 1.10.0 移除過時API[15]
2013年5月30日 1.10.1
2013年7月3日 1.10.2
2014年1月24日 1.11.0
2014年5月1日 1.11.1
2014年12月18日 1.11.2
2015年4月28日 1.11.3 修復在iOS 8.2與8.3裡的錯誤。
2013年4月18日 2.0.0 除去對Internet Explorer 6-8的支援以提高性能,並降低文件大小
2013年5月24日 2.0.1
2013年5月30日 2.0.2
2013年7月3日 2.0.3
2014年1月24日 2.1.0
2014年5月1日 2.1.1
2.1.2
2014年12月18日 2.1.3
2015年4月28日 2.1.4 修復在iOS 8.2與8.3裡的錯誤。

學習環境準備

1.一款自己喜歡的IDE。作為一名Java程式員,Eclipse是我最佳選擇。
2.各種主流瀏覽器。考慮到瀏覽器的相容問題,機器上最好同時裝上Firefox,Chrome,Opera,IE等。由於我使用的操作系統是ubuntu,所以暫時不考慮IE。
3.自己熟悉的web伺服器。這裡以tomcat6.0為例進行學習。
4.api參考手冊。Jquery1.8.3和w3school,w3school裡面的api較多,覆蓋了html,css到js,前端到後臺的一些參考手冊,但是針對性沒有Jquery的參考手冊,建議兩者都可以選擇,或者重點放在前者。

入門案例

1.下載jQuery文件。共有兩個版本的 jQuery 可供下載:一份是精簡過的,另一份是未壓縮的(供調試或閱讀)。壓縮版一般以min.js結為,其目的是為了在生產時減少文件大小,降低網路帶寬,這裡兩者都可以下載下來,官方下載地址

2.jQuery 庫位於上訴下載的js文件中,其中包含了所有的 jQuery 函數。 可以通過下麵的標記把 jQuery 添加到網頁中:

<head>
<script type="text/javascript" src="jquery.js"></script>
</head>

src裡面的內容替換成你的jQuery文件的位置。除了上訴引入jQuery的方法之外,還可以引入谷歌或者微軟的CDN裡面的jQuery文件,用法如下:

使用 Google 的 CDN

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js">
</script>
</head>

使用 Microsoft 的 CDN

<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js">
</script>
</head>

jQuery的基礎語法是:

$(selector).action()

美元符號定義 jQuery
選擇符(selector)“查詢”和“查找” HTML 元素
jQuery 的 action() 執行對元素的操作,簡單案例如:

$(document).ready(function(){
    alert("Hello Jquery");
});

$表示這是jQuery語法,document與JavaScript的document相同,對整個頁面這個節點,ready()表示當頁面載入結束這一事件,與js的onload有些相同,$(document).ready();裡面是一個匿名函數,表示載入結束這也這個頁面之後將觸發函數體裡面的內容。而這裡的函數體只有一句話alter("Hello Jquery"),表示在頁面彈出視窗顯示"Hello Jquery",如果你是第一次接觸jQuery,一定要運行出這個HelloWorld級別的程式出來,因為今後的博客與知識都是建立在這個程式的基礎之上的。

好了,現在讓我們來正式入門《jQuery實戰》系列課程的第一節,做一個校驗用戶名合法性的模塊。
功能需求:
一般在註冊用戶名之前,先對用戶名的合法性進行校驗。如果資料庫中已經存在用戶名則返回不可註冊字樣,如果資料庫中沒有被註冊過,則返回可以註冊字樣。輸入框中沒有輸入任何字元時,輸入框紅色波浪線提示,當輸入框輸入有字元時,紅色波浪線自動消失。

html/jsp頁面代碼如下:

<body>
    請輸入用戶名: <input type="text" id="userName" class="userText"/>
    <button id="verifyButton">校驗</button><br />
    <div id="result"></div>
</body>

body里的標簽比較簡單,一個input輸入框提供給用戶輸入將要註冊的用戶名,button是一個按鈕,這裡不是用form表單提交,而是用ajax提交,所以不用form括起來,此外,這裡還預留了一個內容空白的div,留作顯示相應結果之用。
為了方便管理js文件,每個模塊都單獨的寫一個js文件,本模塊的userVerify.js,需要通過Javascript代碼來做兩件事情:
1.button被按下的時候,需要將文本框中的數據獲取到,然後發送給伺服器端,最後接受伺服器返回的數據, 填充到我們預留的div中,這樣用戶就可以看到結果
2.文本框上,用戶按鍵之後,需要判斷文本框中的內容是否為空,如果不為空,紅色的邊框和背景圖就應該取消,否則保留。

    //這裡面的內容就是頁面裝載完成後需要執行的代碼
    var userNameNode = $("#userName");  
    //需要找到button按扭,註冊事件
    $("#verifyButton").click(function() {
        //1.獲取文本框的內容
        var userName = userNameNode.val();
        //2.將這個內容發送給伺服器端
        if (userName == "") {
            alert("用戶名不能為空");
        } else {
            $.get("../userVerify?userName=" + encodeURI(encodeURI(userName)),null,function(response){
                    //3.接收伺服器端返回的數據,填充到div中 
                    $("#result").html(response);
            });                 
        }
    });

註意:上面的代碼是囊括在$(document).ready();體裡面。第一行代碼的意思是將id為userName的節點取出來,賦值給變數userNameNode。$("#verifyButton").click(function() {});的含義是監聽id為verifyButton的元素,觸發單擊事件時執行匿名函數,做的處理是將userNameNode的值取出來,判斷是否為空,若不為空,則通過ajax的get方法向伺服器發送數據請求。
jQuery的ajax get請求語法如下:

jQuery $.get() 方法
$.get() 方法通過 HTTP GET 請求從伺服器上請求數據。
語法:

$.get(URL,callback);

必需的 URL 參數規定您希望請求的 URL。
可選的 callback 參數是請求成功後所執行的函數名。

本例用的get請求,所以請求的參數是通過url拼接傳遞的。後臺的Servlet接受數據如下:

public class UserVerify extends HttpServlet {
 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String param = request.getParameter("userName");
            System.out.println("userName : " + param);
            if (param == null || param.length() == 0) {
                out.println("用戶名不能為空");
            } else {
                String userName = URLDecoder.decode(param, "UTF-8");
                if ("admin".equals(userName) || "超管".equals(userName)) {
                    out.println("用戶名[" + userName + "]已經存在,請使用別的用戶名註冊");
                } else {
                    out.println("可以使用用戶名[" + userName + "]註冊");
                }
            }
        } finally { 
            out.close();
        }
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    public String getServletInfo() {
        return "Short description";
    }

}

這個Servlet的doGet,doPost都是繼承自Servlet父類來的,doGet負責相應get請求,doPost負責響應post請求,但是無論是get還是post,我們都可以讓它通通用過processRequest()處理請求。processRequest函數的主要內容為:先獲取前端傳遞過來的userName參數值。當不為空時進行判斷是否是合法的,本系列博客的重點放在前端,所以沒有對資料庫中的用戶名合法性校驗,只是簡單的在Servlet裡面進行簡單的判斷,當用戶名為"admin"或者"超管"的時候不合法,其他字元串都合法。
為了相容中文字元串,js需要將userName進行兩次編碼:encodeURI(encodeURI(userName)。

為了實現輸入框紅色波浪線提示的功能,這裡需要添加css文件,裡面保存了輸入框的樣式。這合法div+css的書寫原則,既html之負責基本骨架,css負責具體樣式展示。
userVerify.css的代碼如下:

/*控制文字邊框是紅色實線*/

.userText{
    border: 1px red solid;
    background-image: url("../image/userVerify.gif");
    background-repeat: repeat-x;
    background-position: bottom;
}

紅色波浪線的效果是通過背景圖片展示出來的,小紅色波浪線通過repeat-x不斷的重覆,達到底部波浪線的效果。
為了達到提示效果,必須監聽鍵盤事件,其中用到keyup事件,keyup語法如下:

$(selector).keyup(function)

function 可選。規定當發生 keyup 事件時運行的函數。

jQuery對應的處理代碼

    //處理用戶名輸入框
    $("#userName").keyup(function() {
        var value = userNameNode.val();
        if(value == "") {
            $("#userName").addClass("userText");
        } else {
            $("#userName").removeClass("userText");
        }
    });

addClass() 方法向被選元素添加一個或多個類。該方法不會移除已存在的 class 屬性,僅僅添加一個或多個 class 屬性。removeClass() 方法從被選元素移除一個或多個類。如果沒有規定參數,則該方法將從被選元素中刪除所有類。上述代碼的含義是當id為userName的節點鍵盤鬆開時候執行函數裡面的內容,從input裡面取到值,當值為空的時候,把userText的class加上,達到顯示波浪線的效果。當輸入框的值不為空的時候移除userText的class,到達去除紅色波浪線的效果。

本節知識點

  • 1.HTML負責頁面內容,CSS負責頁面樣式,Javascript負責頁面行為
  • 2.HTML中應該有DOCTYPE來告知瀏覽器的渲染顯示方式
  • 3.可以先定義div或span節點用於以後顯示伺服器返回數據。
  • 4.border屬性可以控制頁面元素的邊框
  • 5.background-***可以控制背景圖,以及背景圖的位置,重覆顯示的方式
  • 6.可以通過#idname或.classname的方式來個制定的html節點定義樣式
  • 7.可以通過$(document).ready(function(){})的方式來定義頁面裝載完成時,需要執行的方法。
  • 8.可以通過$()方法來獲得頁面的指定節點,參數是某種css的選擇器
  • 9.可以在$()方法返回的jquery對象上執行各種Jquery的方法來獲取數據,定義事件,執行操作。
  • 10.val()方法可以獲得節點的value屬性值
  • 11.html()方法可以設定某個節點中的html內容
  • 12.click()方法可以響應滑鼠點擊事件
  • 13.keyup()方法可以響應鍵盤彈起的事件。
  • 14.$.get()方法可以和伺服器端進行get方式的交互,註冊的callback方法會再數據回來的時候被調用,這個方法會接收到代表伺服器端返回數據的一個純文本的參數
  • 15.addClass(),removeClass()方法可以給某個節點添加或刪除一個class
  • 16.發送給伺服器端的數據在javascript中做兩次encodeURI,然後在伺服器端的代碼中按UTF-8的方式做一次URLDecode,可以解決中文亂碼問題。

代碼下載地址:https://github.com/shizongger/JqueryInAction



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.添加按鈕 首先添加一個刪除按鈕,打開文件Index.js【..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Views\Category\Index.js】 添加如下代碼: display: function (data) { var $span = ...
  • 一、問題: 資料庫表數據量極大(千萬條),要求讓伺服器更加快速地響應用戶的需求。 資料庫表數據量極大(千萬條),要求讓伺服器更加快速地響應用戶的需求。 二、解決方案: 1.通過高速伺服器Cache緩存資料庫數據 2.記憶體資料庫 (這裡僅從數據緩存方面考慮,當然,後期可以採用Hadoop+HBase+ ...
  • java基礎知識-去掉list集合中的重覆元素: 思路: 首先新建一個容器resultList用來存放去重之後的元素 然後遍歷sourceList集合中的元素 判斷所遍歷的元素是否已經存在於resultList,如果不存在,則將這個元素加入到resultList中,否則不加。 通過判斷將第二次出現的 ...
  • 原文地址:http://www.cnblogs.com/hellohuang/p/6294763.html # HMX-ServerHMX-Server分步式伺服器框架,主要分為網關、登錄、世界、場景、數據伺服器,適用於大中小型項目 # 安裝步驟1. 下載後,將Source/dependence/下 ...
  • 封裝就是將相關的方法或者屬性抽象成為一個對象。 封裝的意義: 當代碼中包含許多條件判斷,為了改善代碼的可讀性和可維護性,我們可以將條件封裝。 有兩種封裝方式: 一、無參數的條件判斷,封裝為屬性 重構前代碼 public class RemoteControl { private string[] F ...
  • 本文轉載至http://www.cnblogs.com/chenluomenggongzi/p/5950670.html 上面的代碼點擊後會回到頁面頂部。 解決問題: 好了,問題解決\(^o^)/~ 如果想給a標簽添加點擊事件,可以這樣寫 ...
  • javaScript基礎詳解 版權聲明 本文原創作者:雨點的名字 作者博客地址:https://home.cnblogs.com/u/qdhxhz/ 首先講javaScript的擺放位置:<script> 與 </script> 可以放在head和body之間,也可以body中或者head中 Jav ...
  • 效果體驗:http://hovertree.com/texiao/jquery/93/豎直的主菜單貼著頁面左側,當游標移入菜單項時,以3D動畫的方式彈出對應的二級菜單。採用jQuery和CSS3實現。支持Chrome,火狐,Edge等瀏覽器。效果圖:代碼如下: 對於代碼中的jQuery事件,可以使用 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...