1. 程式人生 > 其它 >JavaWeb(八)JQuery

JavaWeb(八)JQuery

jQuery

市場用得比較多兩個框架: jQuery 比較適合做一些網際網路 的應用(12306.com,蘑菇街,美麗說,聚美)

extjs 比較適合做後臺管理系統(電商(訂單管理),銀行,電信)

核心:

主要功能:javascript開發人員查詢元素、操作DOM、處理事件、執行動畫和開發Ajax的操作。優勢:(宗旨:write less ,do more 寫更少的程式碼,做更多的事情)

1:輕量級 (js 庫非常小)

2:強大的選擇器(獲取頁面上面的dom 元素 document.getElementById() 操作dom 必須先得到dom )

3:出色的DOM操作的封裝

4:可靠的事件處理機制(對事件進行了一個封裝)

5:完善的Ajax(底層封裝xmlhttprequest)

6:不汙染頂級變數(在jquery 裡面只有一個物件 jQuery == $)

7:出色的瀏覽器相容性

8:鏈式操作方式($("#ddd").addClass().removeClass())

9:隱式迭代 (顯示迭代:迭代一個數組) 顯示迭代(for(var i=0;i<array.length;i++){ }) 隱身迭代遮蔽掉for 操作

10:行為層與結構層的分離 11:豐富的外掛支援 後期擴充套件非常方便 12:完善的文件

JQuery載入

從  http://jquery.com/  下載後,複製到專案(路徑:WebContent/js)中,然後在頁面生命:

1 <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>

或者從CDN中引用,比如百度:

1 <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"> </script>

jQuery 只有一個物件 (jQuery == $) 一定要搞清楚jQuery 與dom 物件之間的區別於聯絡

dom物件:dom 物件 是瀏覽器自帶物件,dom 物件只能呼叫dom 裡面的屬性和方法, 不能呼叫jQuery 物件裡面的屬性和方法 jQuery物件:jquery 物件是通過jQuery 包裝頁面上面的元素或者dom 而產生的一個新的 物件,jquery 物件時jQuery 獨有的,不能呼叫dom 物件裡面的屬性和方法,jQuery 物件是一個數組。 jQuery 物件與dom 物件時可以相互轉換的,轉換之後它們就可以相互呼叫了

jQuery 選擇器

注意,如果獲取到多個元素將是一個數組,可以直接用陣列的屬性方法,比如 length

當前元素:

1 $(this)    :當前 HTML 元素

元素選擇器

jQuery 使用 CSS 選擇器來選取 HTML 元素。

1  $("p")            :選取 <p> 元素。
2  $("p.intro")      :選取所有 class="intro" 的 <p> 元素。
3  $("p#demo")       :選取有 id="demo" 的 <p> 元素。

屬性選擇器

jQuery 使用 XPath 表示式來選擇帶有給定屬性的元素。

1  $("[href]")         :選取所有帶有 href 屬性的元素。
2  $("[href='#']")     :選取所有帶有 href 值等於 "#" 的元素。
3  $("[href!='#']")    :選取所有帶有 href 值不等於 "#" 的元素。
4  $("[href$='.jpg']") :選取所有 href 值以 ".jpg" 結尾的元素。

CSS 選擇器

jQuery CSS 選擇器可用於改變 HTML 元素的 CSS 屬性。

1 把所有 p 元素的背景顏色更改為紅色:
2 $("p").css("background-color","red");

jQuery選擇器一覽:

選擇器

例項

選取

*

$("*")

所有元素

#id

$("#lastname")

id="lastname" 的元素

.class

$(".intro")

所有 class="intro" 的元素

element

$("p")

所有 <p> 元素

.class.class

$(".intro.demo")

所有 class="intro" 且 class="demo" 的元素

:first

$("p:first")

第一個 <p> 元素

:last

$("p:last")

最後一個 <p> 元素

:even

$("tr:even")

所有偶數 <tr> 元素

:odd

$("tr:odd")

所有奇數 <tr> 元素

:eq(index)

$("ul li:eq(3)")

列表中的第四個元素(index 從 0 開始)

:gt(no)

$("ul li:gt(3)")

列出 index 大於 3 的元素

:lt(no)

$("ul li:lt(3)")

列出 index 小於 3 的元素

:not(selector)

$("input:not(:empty)")

所有不為空的 input 元素

:header

$(":header")

所有標題元素 <h1> - <h6>

:animated

所有動畫元素

:contains(text)

$(":contains('W3School')")

包含指定字串的所有元素

:empty

$(":empty")

無子(元素)節點的所有元素

:hidden

$("p:hidden")

所有隱藏的 <p> 元素

:visible

$("table:visible")

所有可見的表格

s1,s2,s3

$("th,td,.intro")

所有帶有匹配選擇的元素

[attribute]

$("[href]")

所有帶有 href 屬性的元素

[attribute=value]

$("[href='#']")

所有 href 屬性的值等於 "#" 的元素

[attribute!=value]

$("[href!='#']")

所有 href 屬性的值不等於 "#" 的元素

[attribute$=value]

$("[href$='.jpg']")

所有 href 屬性的值包含以 ".jpg" 結尾的元素

:input

$(":input")

所有 <input> 元素

:text

$(":text")

所有 type="text" 的 <input> 元素

:password

$(":password")

所有 type="password" 的 <input> 元素

:radio

$(":radio")

所有 type="radio" 的 <input> 元素

:checkbox

$(":checkbox")

所有 type="checkbox" 的 <input> 元素

:submit

$(":submit")

所有 type="submit" 的 <input> 元素

:reset

$(":reset")

所有 type="reset" 的 <input> 元素

:button

$(":button")

所有 type="button" 的 <input> 元素

:image

$(":image")

所有 type="image" 的 <input> 元素

:file

$(":file")

所有 type="file" 的 <input> 元素

:enabled

$(":enabled")

所有啟用的 input 元素

:disabled

$(":disabled")

所有禁用的 input 元素

:selected

$(":selected")

所有被選取的 input 元素

:checked

$(":checked")

所有被選中的 input 元素

dom 操作 (節點的查詢)

頁面上面的元素分為三種類型的節點

1:元素節點 (9 大選擇器都是用來找元素節點)

2:屬性節點 (先找到元素節點,然後呼叫attr())

3:文字節點 (先找到元素節點然後呼叫text())

節點的建立: 元素節點的建立,屬性節點,文字節點

jQuery 當中的事件

通常會把 jQuery 程式碼放到 <head>部分的事件處理方法中:

頁面載入完畢執行:

window.onload=function(){

}

$(function(){

})

$().ready(function(){

})

區別:window.onload 與 $(function(){}) 都是用來作於介面渲染完畢之後的初始化操作..

window.onload 需要等待頁面上面所有的元素都繪製完畢之後才執行,包含圖片。

$(function(){}) 頁面上面所有的dom 元素繪製完畢之後就執行,不包含圖片。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <script src="js/jquery-3.2.1.min.js"></script>
 7         <style type="text/css">
 8             div{
 9                 width: 60px;
10                 height: 60px;
11                 background-color: aquamarine;
12                 margin: 2px;
13             }
14         </style>
15     </head>
16     <body>
17         <div>這是1段文字</div>
18         <div>這是2段文字</div>
19         <div>這是3段文字</div>
20     </body>
21 </html>
22 <script type="text/javascript">
23     $("div").click(function(){
24         $(this).hide();//單擊隱藏該div
25     });
26 </script>

jQuery 中事件方法的一些例子:

Event 函式

繫結函式至

$(document).ready(function)

將函式繫結到文件的就緒事件(當文件完成載入時)

$(selector).click(function)

觸發或將函式繫結到被選元素的點選事件

$(selector).dblclick(function)

觸發或將函式繫結到被選元素的雙擊事件

$(selector).focus(function)

觸發或將函式繫結到被選元素的獲得焦點事件

$(selector).mouseover(function)

觸發或將函式繫結到被選元素的滑鼠懸停事件

事件一覽:

方法

描述

bind()

向匹配元素附加一個或更多事件處理器

blur()

觸發、或將函式繫結到指定元素的 blur 事件

change()

觸發、或將函式繫結到指定元素的 change 事件

click()

觸發、或將函式繫結到指定元素的 click 事件

dblclick()

觸發、或將函式繫結到指定元素的 double click 事件

delegate()

向匹配元素的當前或未來的子元素附加一個或多個事件處理器

die()

移除所有通過 live() 函式新增的事件處理程式。

error()

觸發、或將函式繫結到指定元素的 error 事件

event.isDefaultPrevented()

返回 event 物件上是否呼叫了 event.preventDefault()。

event.pageX

相對於文件左邊緣的滑鼠位置。

event.pageY

相對於文件上邊緣的滑鼠位置。

event.preventDefault()

阻止事件的預設動作。

event.result

包含由被指定事件觸發的事件處理器返回的最後一個值。

event.target

觸發該事件的 DOM 元素。

event.timeStamp

該屬性返回從 1970 年 1 月 1 日到事件發生時的毫秒數。

event.type

描述事件的型別。

event.which

指示按了哪個鍵或按鈕。

focus()

觸發、或將函式繫結到指定元素的 focus 事件

keydown()

觸發、或將函式繫結到指定元素的 key down 事件

keypress()

觸發、或將函式繫結到指定元素的 key press 事件

keyup()

觸發、或將函式繫結到指定元素的 key up 事件

live()

為當前或未來的匹配元素新增一個或多個事件處理器

load()

觸發、或將函式繫結到指定元素的 load 事件

mousedown()

觸發、或將函式繫結到指定元素的 mouse down 事件

mouseenter()

觸發、或將函式繫結到指定元素的 mouse enter 事件

mouseleave()

觸發、或將函式繫結到指定元素的 mouse leave 事件

mousemove()

觸發、或將函式繫結到指定元素的 mouse move 事件

mouseout()

觸發、或將函式繫結到指定元素的 mouse out 事件

mouseover()

觸發、或將函式繫結到指定元素的 mouse over 事件

mouseup()

觸發、或將函式繫結到指定元素的 mouse up 事件

one()

向匹配元素新增事件處理器。每個元素只能觸發一次該處理器。

ready()

文件就緒事件(當 HTML 文件就緒可用時)

resize()

觸發、或將函式繫結到指定元素的 resize 事件

scroll()

觸發、或將函式繫結到指定元素的 scroll 事件

select()

觸發、或將函式繫結到指定元素的 select 事件

submit()

觸發、或將函式繫結到指定元素的 submit 事件

toggle()

繫結兩個或多個事件處理器函式,當發生輪流的 click 事件時執行。

trigger()

所有匹配元素的指定事件

triggerHandler()

第一個被匹配元素的指定事件

unbind()

從匹配元素移除一個被新增的事件處理器

undelegate()

從匹配元素移除一個被新增的事件處理器,現在或將來

unload()

觸發、或將函式繫結到指定元素的 unload 事件

jQuery 效果函式

方法

描述

animate()

對被選元素應用“自定義”的動畫

clearQueue()

對被選元素移除所有排隊的函式(仍未執行的)

delay()

對被選元素的所有排隊函式(仍未執行)設定延遲

dequeue()

執行被選元素的下一個排隊函式

fadeIn()

逐漸改變被選元素的不透明度,從隱藏到可見

fadeOut()

逐漸改變被選元素的不透明度,從可見到隱藏

fadeTo()

把被選元素逐漸改變至給定的不透明度

hide()

隱藏被選的元素

queue()

顯示被選元素的排隊函式

show()

顯示被選的元素

slideDown()

通過調整高度來滑動顯示被選元素

slideToggle()

對被選元素進行滑動隱藏和滑動顯示的切換

slideUp()

通過調整高度來滑動隱藏被選元素

stop()

停止在被選元素上執行動畫

toggle()

對被選元素進行隱藏和顯示的切換

jQuery 文件操作方法

這些方法對於 XML 文件和 HTML 文件均是適用的,除了:html()。

方法

描述

addClass()

向匹配的元素新增指定的類名。

after()

在匹配的元素之後插入內容。

append()

向匹配元素集合中的每個元素結尾插入由引數指定的內容。

appendTo()

向目標結尾插入匹配元素集合中的每個元素。

attr()

設定或返回匹配元素的屬性和值。

before()

在每個匹配的元素之前插入內容。

clone()

建立匹配元素集合的副本。

detach()

從 DOM 中移除匹配元素集合。

empty()

刪除匹配的元素集合中所有的子節點。

hasClass()

檢查匹配的元素是否擁有指定的類。

html()

設定或返回匹配的元素集合中的 HTML 內容。

insertAfter()

把匹配的元素插入到另一個指定的元素集合的後面。

insertBefore()

把匹配的元素插入到另一個指定的元素集合的前面。

prepend()

向匹配元素集合中的每個元素開頭插入由引數指定的內容。

prependTo()

向目標開頭插入匹配元素集合中的每個元素。

remove()

移除所有匹配的元素。

removeAttr()

從所有匹配的元素中移除指定的屬性。

removeClass()

從所有匹配的元素中刪除全部或者指定的類。

replaceAll()

用匹配的元素替換所有匹配到的元素。

replaceWith()

用新內容替換匹配的元素。

text()

設定或返回匹配元素的內容。

toggleClass()

從匹配的元素中新增或刪除一個類。

unwrap()

移除並替換指定元素的父元素。

val()

設定或返回匹配元素的值。

wrap()

把匹配的元素用指定的內容或元素包裹起來。

wrapAll()

把所有匹配的元素用指定的內容或元素包裹起來。

wrapinner()

將每一個匹配的元素的子內容用指定的內容或元素包裹起來。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <script src="js/jquery-3.2.1.min.js"></script>
 7         <style type="text/css">
 8             div{
 9                 width: 60px;
10                 height: 60px;
11                 background-color: aquamarine;
12                 margin: 2px;
13             }
14                 </style>
15         <script>
16         $(document).ready(function(){
17           $("#btn1").click(function(){
18             $("p").append(" <b>追加的文字</b>.");
19           });
20         
21           $("#btn2").click(function(){
22             $("ol").append("<li>追加的list</li>");
23           });
24         });
25         </script>
26     </head>
27     <body>
28         <p>這是一個段落</p>
29         <p>這是一個段落</p>
30         <ol>
31             <li>List1</li>
32             <li>List2</li>
33             <li>List3</li>
34         </ol>
35         <button id="btn1">追加文字</button>
36         <button id="btn2">追加列表項</button>
37     </body>
38 </html>

jQuery CSS 操作函式

下面列出的這些方法設定或返回元素的 CSS 相關屬性。

CSS 屬性

描述

css()

設定或返回匹配元素的樣式屬性。

height()

設定或返回匹配元素的高度。

offset()

返回第一個匹配元素相對於文件的位置。

offsetParent()

返回最近的定位祖先元素。

position()

返回第一個匹配元素相對於父元素的位置。

scrollLeft()

設定或返回匹配元素相對滾動條左側的偏移。

scrollTop()

設定或返回匹配元素相對滾動條頂部的偏移。

width()

設定或返回匹配元素的寬度。


 1<!DOCTYPE html> 1 <html>
 2 <head>
 3 <script type="text/javascript" src="/jquery/jquery.js"></script>
 4 <script type="text/javascript">
 5 $(document).ready(function(){
 6   $("button").click(function(){
 7     $("p").css("background-color","red");
 8   });
 9 });
10 </script>
11 </head>
12 
13 <body>
14 <h2>This is a heading</h2>
15 <p>This is a paragraph.</p>
16 <p>This is another paragraph.</p>
17 <button type="button">Click me</button>
18 </body>
19 
20 </html>
 2 <html>
 3 <head>
 4 <script src="/jquery/jquery-1.11.1.min.js"></script>
 5 <script>
 6 $(document).ready(function(){
 7   $("button").click(function(){
 8     alert("Background color = " + $("p").css("background-color"));
 9   });
10 });
11 </script>
12 </head>
13 
14 <body>
15 <h2>這是標題</h2>
16 <p style="background-color:#ff0000">這是一個段落。</p>
17 <p style="background-color:#00ff00">這是一個段落。</p>
18 <p style="background-color:#0000ff">這是一個段落。</p>
19 <button>返回 p 元素的背景色</button>
20 </body>
21 </html>

jQuery 遍歷函式

jQuery 遍歷函式包括了用於篩選、查詢和串聯元素的方法。

函式

描述

.add()

將元素新增到匹配元素的集合中。

.andSelf()

把堆疊中之前的元素集新增到當前集合中。

.children()

獲得匹配元素集合中每個元素的所有子元素。

.closest()

從元素本身開始,逐級向上級元素匹配,並返回最先匹配的祖先元素。

.contents()

獲得匹配元素集合中每個元素的子元素,包括文字和註釋節點。

.each()

對 jQuery 物件進行迭代,為每個匹配元素執行函式。

.end()

結束當前鏈中最近的一次篩選操作,並將匹配元素集合返回到前一次的狀態。

.eq()

將匹配元素集合縮減為位於指定索引的新元素。

.filter()

將匹配元素集合縮減為匹配選擇器或匹配函式返回值的新元素。

.find()

獲得當前匹配元素集合中每個元素的後代,由選擇器進行篩選。

.first()

將匹配元素集合縮減為集合中的第一個元素。

.has()

將匹配元素集合縮減為包含特定元素的後代的集合。

.is()

根據選擇器檢查當前匹配元素集合,如果存在至少一個匹配元素,則返回 true。

.last()

將匹配元素集合縮減為集合中的最後一個元素。

.map()

把當前匹配集合中的每個元素傳遞給函式,產生包含返回值的新 jQuery 物件。

.next()

獲得匹配元素集合中每個元素緊鄰的同輩元素。

.nextAll()

獲得匹配元素集合中每個元素之後的所有同輩元素,由選擇器進行篩選(可選)。

.nextUntil()

獲得每個元素之後所有的同輩元素,直到遇到匹配選擇器的元素為止。

.not()

從匹配元素集合中刪除元素。

.offsetParent()

獲得用於定位的第一個父元素。

.parent()

獲得當前匹配元素集合中每個元素的父元素,由選擇器篩選(可選)。

.parents()

獲得當前匹配元素集合中每個元素的祖先元素,由選擇器篩選(可選)。

.parentsUntil()

獲得當前匹配元素集合中每個元素的祖先元素,直到遇到匹配選擇器的元素為止。

.prev()

獲得匹配元素集合中每個元素緊鄰的前一個同輩元素,由選擇器篩選(可選)。

.prevAll()

獲得匹配元素集合中每個元素之前的所有同輩元素,由選擇器進行篩選(可選)。

.prevUntil()

獲得每個元素之前所有的同輩元素,直到遇到匹配選擇器的元素為止。

.siblings()

獲得匹配元素集合中所有元素的同輩元素,由選擇器篩選(可選)。

.slice()

將匹配元素集合縮減為指定範圍的子集。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <style>
 5 .ancestors *
 6 { 
 7 display: block;
 8 border: 2px solid lightgrey;
 9 color: lightgrey;
10 padding: 5px;
11 margin: 15px;
12 }
13 </style>
14 <script src="/jquery/jquery-1.11.1.min.js">
15 </script>
16 <script>
17 $(document).ready(function(){
18   $("span").parent().css({"color":"red","border":"2px solid red"});
19 });
20 </script>
21 </head>
22 <body>
23 
24 <div class="ancestors">
25   <div style="width:500px;">div (曾祖父)
26     <ul>ul (祖父)  
27       <li>li (直接父)
28         <span>span</span>
29       </li>
30     </ul>   
31   </div>
32 
33   <div style="width:500px;">div (祖父)   
34     <p>p (直接父)
35         <span>span</span>
36       </p> 
37   </div>
38 </div>
39 
40 </body>
41 </html>