一、JQuery簡介
1.1簡介
jQuery是繼prototype之後又一個優秀的JavaScript庫。它是輕量級的js庫 ,它兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及後續版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更方便地處理HTML(標準通用標記語言下的一個應用)、events、實現動畫效果,並且方便地爲網站提供AJAX交互。jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。jQuery能夠使用戶的html頁面保持代碼和html內容分離,也就是說,不用再在html裏面插入一堆js來調用命令了,只需要定義id即可。
jQuery是免費、開源的,使用MIT許可協議。jQuery的語法設計可以使開發更加便捷,例如操作文檔對象、選擇DOM元素、製作動畫效果、事件處理、使用Ajax以及其他功能。除此以外,jQuery提供API讓開發者編寫插件。其模塊化的使用方式使開發者可以很輕鬆的開發出功能強大的靜態或動態網頁。
1.2優點
- (1)寫少代碼,做多事情【write less do more】
- (2)免費,開源且輕量級的js庫,容量很小
- 注意:項目中,提倡引用min版的js庫
- (3)兼容市面上主流瀏覽器,例如 IE,Firefox,Chrome
- 注意:jQuery不是將所有JS全部封裝,只是有選擇的封裝
- (4)能夠處理HTML/JSP/XML、CSS、DOM、事件、實現動畫效果,也能提供異步AJAX功能
- (5)文檔手冊很全,很詳細
- (6)成熟的插件可供選擇
- (7)提倡對主要的html標籤提供一個id屬性,但不是必須的
- (8)出錯後,有一定的提示信息
- (9)不用再在html裏面通過<script>標籤插入一大堆js來調用命令了
二、JQuery的九類選擇器
使用jquery,首先我們需要去把jquery的包導入,這個jquery的官網上面是可以下載的,地址:https://jquery.com/,目前最新版本是3.0,一般會有兩種版本的,一個是完全的,一個是迷你版本的,兩個版本就是大小不一樣,裏面的實質性東西其實是一樣的,而這個迷你版的適合項目正式上線使用,因爲佔的體積小啊,一般學習或者練習的話就可以嘗試使用完全版的。下面以幾個案例來實際說明jquery的使用,完整的代碼會在文末提供下載鏈接,歡迎下載學習。選擇器的部分在下載的文件中的/JQuery\WebRoot\selector目錄下。
2.1 基本選擇器
[javascript] view plain copy print?
- //1)查找ID爲"div1ID"的元素個數
- alert( $("#div1ID").size());
- //2)查找DIV元素的個數
- alert( $("div").length);
- //3)查找所有樣式是"myClass"的元素的個數
- alert($(".myClass").size());
- //4)查找所有DIV,SPAN,P元素的個數
- alert($("div,span,p").size());
- //5)查找所有ID爲div1ID,CLASS爲myClass,P元素的個數
- alert($("#div1ID,.myClass,p").size());
2.2 層次選擇器
[javascript] view plain copy print?
- //1)找到表單form裏所有的input元素的個數
- alert($("form input").size());
- //2)找到表單form下所有的子級input元素個數
- alert($(" form > input").size());
- //3)找到表單form同級第一個input元素的value屬性值
- alert($("form + input").val());
- //4)找到所有與表單form同級的input元素個數
- alert($("form ~ input").size());
2.3 增強基本選擇器
[javascript] view plain copy print?
- //1)查找UL中第一個元素li的內容
- alert($("ul li:first").html());
- alert($("ul li:first").text());
- //html()要用在html/jsp中,不能用在xml中,而text()都可以用
- //2)查找UL中最後一個元素的內容
- alert($("ul li:last").text());
- //3)查找所有未選中的input元素個數
- alert($(":checkbox:checked").size()); //選中的 2
- alert($(":checkbox:not(:checked)").size()); //未選中
- //4)查找表格的1、3、5...奇數行個數
- alert($("table tr:odd").size()); //3
- //5)查找表格的2、4、6...偶數行個數
- alert($("table tr:even").size()); //3
- //6)查找表格中第二行的內容,從索引號0開始
- alert($("table tr:eq(1)").text());
- //html()強調的是標籤中的內容,即便標籤中有子標籤,也會顯示出來,而text()強調的是標籤中的文本內容,不會顯示子標籤
- //7)查找表格中第二第三行的個數,即索引值是1和2,也就是比0大
- alert($("table tr:gt(0)").size()); //5
- //8)查找表格中第一第二行的個數,即索引值是0和1,也就是比2小
- alert($("table tr:lt(3)").size());
- //9)給頁面內所有標題<h1><h2><h3>加上紅色背景色
- alert($(":header").css("background-color","red").css("color","white"));
2.4 內容選擇器
[javascript] view plain copy print?
- //1)查找所有包含文本"John"的div元素的個數
- alert($("div:contains('John')").size()); //2
- //2)查找所有p元素爲空的元素個數
- alert($("p:empty").size()); //2
- //3)給所有包含p元素的div元素添加一個myClass樣式
- $("div:has(p)").addClass("myClass");
- //4)查找所有含有子元素或者文本的p元素個數,即p爲父元素
- alert($("p:parent").size()); //2
2.5 可見性選擇器
[javascript] view plain copy print?
- //1)查找隱藏的tr元素的個數
- alert($("table tr:hidden").size()); //1
- //2)查找所有可見的tr元素的個數
- alert($("table tr:not(:hidden)").size());
- alert($("table tr:visible").size()); //2
2.6 屬性選擇器
[java] view plain copy print?
- //1)查找所有含有id屬性的div元素個數
- alert($("div[id]").size()); //1
- //2)查找所有name屬性是newsletter的input元素,並將其選中
- $("input[name='newsletter']").attr("checked","checked");
- //3)查找所有name屬性不是newsletter的input元素,並將其選中
- $("input[name!='newsletter']").attr("checked","true"); //1
- //4)查找所有name屬性以'news'開始的input元素,並將其選中
- $("input[name^='news']").attr("checked","true"); //3
- //5)查找所有name屬性以'letter'結尾的input元素,並將其選中
- $("input[name$='letter']").attr("checked","true"); //2
- //6)查找所有name屬性包含'news'的input元素,並將其選中
- $("input[name*='news']").attr("checked","true"); //3
- //7)找到所有含有id屬性,並且它的name屬性是以"letter"結尾的input元素,並將其選中
- $("input[id][name$='letter']").attr("checked","true");
2.7 子元素選擇器
[javascript] view plain copy print?
- //1)迭代[each]每個ul中第1個li元素中的內容,索引從1開始
- $("ul li:first-child").each(function(){
- alert($(this).text());
- });
- //2)迭代每個ul中最後1個li元素中的內容,索引從1開始
- $("ul li:last-child").each(function(){
- alert($(this).text());
- });
- //3)在ul中查找是唯一子元素的li元素的內容
- $("ul li:only-child").each(function(){
- alert($(this).text());
- });
- //4)迭代每個ul中第2個li元素中的內容,索引從1開始
- $("ul li:nth-child(2)").each(function(){
- alert($(this).text());
- });
2.8 表單選擇器
[javascript] view plain copy print?
- //1)查找所有input元素的個數
- alert($("input").size()); //10
- alert($(":input").size()); //13
- //2)查找所有文本框的個數
- alert($(":text").size()); //1
- //3)查找所有密碼框的個數
- alert($(":password").size()); //1
- //4)查找所有單選按鈕的個數
- alert($(":radio").size());
- //5)查找所有複選框的個數
- alert($(":checkbox").size());
- //6)查找所有提交按鈕的個數
- alert($(":submit").size());
- //7)匹配所有圖像域的個數
- alert($(":images").size());
- //8)查找所有重置按鈕的個數
- alert($(":reset").size());
- //9)查找所有普通按鈕的個數
- alert($(":button").size());
- //10)查找所有文件域的個數
- alert($(":file").size()); //1
- //11)查找所有input元素爲隱藏域的個數
- alert($(":input:hidden").size()); //1
2.9 表單對象屬性選擇器
[javascript] view plain copy print?
- //1)查找所有可用的input元素的個數
- alert($("input:enabled").size());
- //2)查找所有不可用的input元素的個數
- alert($("input:disabled").size());
- //3)查找所有選中的複選框元素的個數
- alert($(":checkbox:checked").size());
- //4)查找所有未選中的複選框元素的個數
- alert($(":checkbox:not(:checked)").size());
- //5)查找所有選中的選項元素的個數
- alert($("select option:selected").size());
- alert($("#provinceID option:not(:selected)").size());
三、JQuery的方法API的使用
jquery的方法非常多,其實都挺簡單的,使用jquery大大降低了開發難度。該部分內容在下載的文件中的\JQuery\WebRoot\method目錄中。
each():是jQuery中專用於迭代數組的方法,參數爲一個處理函數,this表示當前需要迭代的js對象
append():追加到父元素之後
prepend():追加到父元素之前
after():追加到兄弟元素之後
before():追加到兄弟元素之前
attr(name):獲取屬性值
attr(name,value):給符合條件的標籤添加key-value屬性對
$("<div id='xxID'>HTML代碼</div>"):創建元素,屬性,文本
remove():刪除自已及其後代節點
val():獲取value屬性的值
val(""):設置value屬性值爲""空串,相當於清空
text():獲取HTML或XML標籤之間的值
text(""):設置HTML或XML標籤之間的值爲""空串
clone():只複製樣式,不復制行爲
clone(true):既複製樣式,又複製行爲
replaceWith():替代原來的節點
removeAttr():刪除已存在的屬性
addClass():增加已存在的樣式
removeClass():刪除已存在的樣式
hasClass():判斷標籤是否有指定的樣式,true表示有樣式,false表示無樣式
toggleClass():如果標籤有樣式就刪除,否則增加樣式
offset():獲取對象的left和top座標
offset({top:100,left:200}):將對象直接定位到指定的left和top座標
width():獲取對象的寬
width(300):設置對象的寬
height():獲取對象的高
height(500):設置對象的高
children():只查詢子節點,不含後代節點
next():下一下兄弟節點
prev():上一下兄弟節點
siblings():上下兄弟節點
show():顯示對象
hide():隱藏對象
fadeIn():淡入顯示對象
fadeOut():淡出隱藏對象
slideUp():向上滑動
slideDown():向下滑動
slideToggle():上下切換滑動,速度快點
下面來看一些實例:
1、關於循環:
[javascript] view plain copy print?
- //用JSON語法創建一個一維數組,存入object類型的編號和姓名,再迭代
- var nameArray=[
- {id:1,name:"張三 "},
- {id:2,name:"王明" },
- {id:3,name:"李水" }
- ];
- var _nameArray=$(nameArray);
- _nameArray.each(function(){
- //this代表object類型
- alert(this.id+":"+this.name);
- });
2、子元素插入到父元素內
[javascript] view plain copy print?
- //DIV標籤插入到UL標籤之後(父子關係)
- $("ul").append($("div"));
- //DIV標籤插入到UL標籤之前(父子關係)
- $("ul").prepend($("div"));
3、子元素插入到父元素外
[javascript] view plain copy print?
- //DIV標籤插入到UL標籤之後(兄弟關係)
- $("ul").after($("div"));
- //DIV標籤插入到UL標籤之前(兄弟關係)
- $("ul").before($("div"));
4、獲取屬性
[javascript] view plain copy print?
- //取得form裏第一個input元素的type屬性
- alert($("form input:first").attr("type")); //text
- //設置form下最後一個input元素的爲只讀文本框
- $("form input:last").attr("readonly","readonly");
- $(":password").attr("readonly","readonly");
- //獲取密碼框的值
- alert($(":password").val());
5、創建元素
[javascript] view plain copy print?
- //創建div元素,添加"哈哈"文本,ID屬性,並添加到文檔中
- //js方式
- var divElement=document.createElement("div");
- divElement.innerHTML="哈哈";
- divElement.setAttribute("id","2016");
- //document.getElementsByTagName("body")[0].appendChild(divElement);
- document.body.appendChile(divElement);
- //jquery方式
- var _div=$("<div id='2016'>哈哈</div>");
- // $("body").append(_div);
- $(document.body).append(_div);
6、刪除元素
[javascript] view plain copy print?
- //刪除ID爲secondID的LI元素
- $("#secondID").remove();
- //刪除所有LI元素
- $("ul li").remove();
- //刪除UL元素
- $("ul").remove();
- //$(""#b").remove();
7、獲取文本內容
[javascript] view plain copy print?
- //取得<div>中的內容
- alert($("div").text());
- //取得<option>的值和描述
- var _option=$("#city option");
- var value=_option.val();
- var text=_option.text();
- alert(value+":"+text);
8、複製元素
[javascript] view plain copy print?
- //複製原input元素,添加到原input元素後,與其同級
- var _old=$(":button");
- var _new=_old.clone(); //在內存中
- _new.val("新按鈕"); //無參代表取值,有參代表賦值
- _old.after(_new);
- //爲原input元素動態添加單擊事件,且複製原input元素,
- var _old=$(":button");
- _old.click(function(){
- alert("動態事件");
- });
- //添加到原input元素後,與其同級,且和原按鈕有一樣的行爲
- var _new=_old.clone();
- _new.val("新按鈕");
- _old.after(_new);
9、替換元素
[javascript] view plain copy print?
- //雙擊<div>中的文本,用文本框替換文本
- $("div").dblclick(function(){
- var _text=$("<input type='text' style='width:165px;height:23px' />");
- //文本框替代文本框標籤
- $(this).replaceWith(_text);
- });
10、刪除屬性
[javascript] view plain copy print?
- //爲<table>元素添加屬性border/align/width
- $("table").attr("border","2").attr("align","center").attr("width","40%");
- //將<table>元素的align屬性刪除
- $("table").removeAttr("align");
11、添加樣式
[javascript] view plain copy print?
- //爲無樣式的DIV添加樣式
- $("div:first").addClass("myClass");
- //爲有樣式的DIV刪除樣式
- $("div:last").removeClass("myClass");
- //切換樣式,即有樣式的變成無樣式,無樣式的變成有樣式
- $("div").toggleClass("myClass");
- //最後一個DIV是否有樣式
- var flag=$("div:last").hasClass("myClass");
- alert(flag?"有":"無");
12、獲取座標,座標設置
[java] view plain copy print?
- //獲取圖片的座標
- var offset=$("img").offset();
- var x=offset.top;
- var y=offset.left;
- alert(x+":"+y);
- //設置圖片的座標
- $("img").offset({
- top:200,
- left:200
- });
- //獲取圖片的寬高
- var w=$("img").width();
- var h=$("img").height();
- alert(w+":"+h);
- //設置圖片的寬高
- var w=$("img").width(500);
- var h=$("img").height(500);
13、獲取父元素的子元素
[javascript] view plain copy print?
- //取得div元素的直接子元素內容,不含後代元素
- var _span=$("div").children();
- var content=_span.html();
- alert(content);
- //取得div元素的下一個同級的兄弟元素內容
- var _p=$("div").next();
- alert(_p.text());
- //取得div元素的上一個同級的兄弟元素內容
- var _p=$("div").prev();
- alert(_p.text());
- //依次取得div元素的上下一個同級的所有兄弟元素的內容
- var _all=$("div").siblings();
- _all.each(function(){
- alert($(this).text());
- });
- //只找p
- var _all=$("div").siblings("p");
- _all.each(function(){
- alert($(this).text());
- });
14、動畫漸變(顯示,隱藏)
[java] view plain copy print?
- //圖片隱蔽
- //$("img").hide(5000); //5秒之後隱藏
- //隱藏的動畫結束後調用一個函數
- $("img").hide(5000,function(){
- alert("完成");
- });
- //暫停3秒後繼續隱藏
- window.setTimeout(function(){
- $("img").show(5000);
- },3000);
- //圖片顯示
- $("img").show(5000);
15、圖片的淡入淡出
[javascript] view plain copy print?
- //淡入顯示圖片
- $("img").fadeIn(5000);
- //淡出隱蔽圖片
- $("img").fadeOut(5000);
16、標籤的滑動
[javascript] view plain copy print?
- //向上下滑動
- $(":button").click(function(){
- //div標籤上下移動
- $("div").slideToggle(1000);
- });
四、JQuery的事件API
1、頁面加載
[javascript] view plain copy print?
- //定義a()和b()二個方法
- function a(){
- alert("JS方式");
- }
- function b(){
- alert("JQUERY方式");
- }
- //使用JS方式加載a()和b()二個方法
- window.οnlοad=function(){
- a();
- b();
- };
- //使用jQuery方式加載a()和b()二個方法
- $(document).ready(function(){
- a();
- b();
- });
- //使用jQuery最簡方式加載a()和b()二個方法
- $(function(){
- a();
- b();
- });
- //js方式的onload與jquery方式的ready對比,ready更快。
2、觸發改變事件
[javascript] view plain copy print?
- //當<select>標籤觸發onchange事件,顯示選中<option>的value和innerHTML屬性的值
- $("#city").change(function(){
- var $option=$("#city option:selected");
- var value=$option.val();
- var text=$option.text();
- alert(value+":"+text);
- });
3、獲得焦點
[javascript] view plain copy print?
- //加載頁面時獲取光標並選中所有文字
- $(function(){
- //光標定位文本框
- $(":text").focus();
- //選中文本框所有文本
- $(":text").select();
- });
4、按鍵事件
[javascript] view plain copy print?
- //當按鍵彈起時,顯示所按鍵的code碼
- $(function(){
- $(document).keyup(function(){
- //獲取按鍵的unicode編碼
- var code=event.keyCode;
- alert(code);
- });
- });
5、獲得鼠標的移動事件
[javascript] view plain copy print?
- //顯示鼠標移動時的X和Y座標
- $(function(){
- $(document).mousemove(function(){
- var x=event.clientX;
- var y=event.clientY;
- $("#xID").val(x);
- $("#yID").val(y);
- });
- });
6、mouseover和mouseout事件
[javascript] view plain copy print?
- //鼠標移到某行上,某行背景變色
- $("table tr").mouseover(function(){
- $(this).css("background-color","pink");
- });
- //鼠標移出某行,某行還原
- $("table tr").mouseout(function(){
- $(this).css("background-color","white");
- });
- //鼠標移到某圖片上,爲圖片加邊框
- $("img").mouseover(function(){
- $(this).css("border-color","red");
- });
- //鼠標移出圖片,圖片還原
- $("img").mouseout(function(){
- $(this).css("border-color","white");
- });
7、submit事件
[javascript] view plain copy print?
- <form action="06_mouseover_mouseout.html" method="post">
- 用戶名:<input type="text"/>
- <input type="submit" value="表單提交"/>
- </form>
- <script type="text/javascript">
- //當表單提交前檢測
- $(function(){
- //將光標定位於文本框中
- $(":text").focus();
- });
- $("form").submit(function(){
- var flag=false;
- //獲取文本框中的內容
- var name=$(":text").val();
- //去掉兩邊空格
- name=$.trim(name);
- if(name.length==0){
- alert("用戶名不能爲空");
- $(":text").focus();
- $(":text").val("");
- }else{
- flag=isChinese(name);
- //不是中文
- if(!flag){
- alert("用戶名必須是中文");
- }else{
- }
- }
- return flag;
- });
- //檢查是否爲中文
- function isChinese(str){
- if(/^[\u4e00-\u9fa5]+$/.test(str)){
- return true;
- }else{
- return false;
- }
- }
- </script>
- 關注QQ公衆號【黑客聯盟】學習更多黑客技術!