來源於:http://blog.poetries.top/2016/10/20/review-jQuery/javascript
http://www.jianshu.com/p/f8e3936b34c9php
首先,來了解一下jQuery
學習的總體思路css
JQuery
概念html
javascript
概念
Js
語言的API
和語法組織邏輯,經過內置window
和document
對象,來操做內存中的DOM
元素JQuery
概念
javascript
的,同上,提升了代碼的效率jQuery
是什麼:前端
javascript
代碼倉庫,咱們稱之爲javascript
框架。javascript
框架,能夠簡化查詢DOM
對象、處理事件、製做動畫、處理Ajax
交互過程。js
文件)DOM
操做的封裝Ajax
CSS
選擇器更精確、靈活)DOM
,動態添加、移除樣式)ajax
)如何引入JQuery
包java
JQuery
Google
在線提供的庫文件(穩定可靠高速)使用Google
提供的API
導入 <script type=「text/javascript」 src=「jquery.js」></script>
jquery
寫第一個JQUery
案例css3
JQuery
庫中,$
是JQuery
的別名,$()
等效於就jQuery()
1
2
3
4
5
6
|
<script type=「text/javascript」 src=「」>
</script>
<script type=「text/javascript」>
$(
function(){
alert(「jQuery 你好!」);
});
</script>
|
講解$(function(){})
;git
$
是jQuery
別名。如$()
也可jQuery()
這樣寫,至關於頁面初始化函數,當頁面加載完畢,會執行jQuery()
。JQuery
操做DOM
文檔。必須確保在DOM
載入完畢後開始執行,應該用ready
事件作處理HTML
文檔的開始$(document).ready(function(){})
;
js
的window.onload
事件函數,可是ready
事件要先於onload
事件執行window.onload = function(){}
;爲方便開發,jQuery
簡化這樣的方法,直接用$()
表示github
JQuery
的ready
事件不等於Js
的load
:
load
須要等外部圖片和視頻等所有加載才執行。ready
是DOM
繪製完畢後執行,先與外部文件load
只可寫一次,ready
能夠屢次window.onload
與$(document).ready()
對比window.onload | $(document).ready() | |
---|---|---|
執行時機 | 必須等網頁中全部內容加載完後(圖片)才執行 | 網頁中的DOM 結構繪製完後就執行,可能DOM 元素相關的東西並無加載完 |
編寫個數 | 不能同時執行多個 | 能同時執行多個 |
簡化寫法 | 無 | $(document).ready(function(){ //.. }); 推薦寫法: $(function(){ }); |
jQuery
有哪些功能(API
):
ajax
簡單的JQuery
選擇器:
JQuery
基本選擇器(ID
選擇器,標籤選擇器,類選擇器,通配選擇器和組選擇器5
種)ID
選擇器:document.getElementById(id)
與$("#id")
對比(改變文字大小)—id
惟一,返回單個元素document.getElementsByTagName(tagName)
與$("tagname")
對比—多個標籤,返回數組$(".className")
–多個classname
(改變背景圖片)document.getElementsByTagName("*")
與$("*")
對比—指範圍內的全部標籤元素$("seletor1,seletor2,seletor3")
—-無數量限制,用逗號分割JQuery
JQuery
是什麼
javascript
用來幹什麼的:
DOM
對象css
jQuery
做用同樣,只是更加快速簡潔如何引用JQuery
1
2
3
4
5
6
7
8
|
<script type=
"text/javascript"></script>
寫第一個JQUery案例
<script type=「text/javascript」 src=「」>
</script>
<script type=「text/javascript」>
$(
function(){
alert(「jQuery 你好!」);
});
</script>
|
$()講解
$
在JQuery
庫中,$
是JQuery
的別名,$()
等效於就jQuery()
.$()
是JQuery
方法,贊可看做是JQuery
的選擇器,與css
選擇器類似(可作對比)var jQuery==$ =function(){}
$()
本質就是一個函數也就是 jQuery
的核心函數jQuery
的對象都這樣變量加上一個符號$
方便識別:var $div = $("#")
1
2
3
|
function $(id){
return document.getElementById(id);
}
|
$()
和document
是相等的嗎
1
2
3
4
5
|
<div id="a" class="aa"></div>
<div id="b" class="aa"></div>
<div id="c" class="aa"></div>
alert(document.getElementById("id") == $("#aa"));//返回結果爲false
alert(document.getElementById("id") == $("#aa").get(0));//返回true
|
代理對象$()
jQuery
中返回的是代理對象自己jQuery
的核心原理是經過選擇器找到對應的代理對象jQuery
全都是經過方法操做$(".className")
$(".aa").css("color","green");
$("#a").css("background-color","#ff0066");
$("p").css("color","#cc3366");
$("#b ul li").size();
對象轉換($(element)
)
dom
對象和jquery
代理對象的相互轉換
1
2
3
4
5
|
$(傳入的原生對象);
//原生對象轉化成jQuery對象
var nav = document.getElementById("nav");
var $nav = $(nav);
alert($nav.get(
0) == nav);//true
|
檢索範圍的限制($('字符串',element)
)
總結:三種寫法對比:
方式一:不推薦 搜索速度最慢
$("#nav").css();
$("#nav li").css();
方式二:搜索速度最快 鏈式操做
$("#nav").css().children().css();
方式三:也經常使用 速度第二快
var $nav = $("#nav").css()
;$("li",$nav).css()
; $nav
限制了搜索範圍 速度快總結: $()
jquery
核心方法的做用和使用場景
$(ul.nav")
html
標籤)$("<img>")
–最終加到DOM
樹中 $xx.append("<img>")
;element dom
對象,直接包裝爲proxy
對象返回 $(DOM對象)
element
dom
對象的話,那麼就是在element
這個dom
對象裏面尋找選擇器對應的元素而且代理 $("li",$DOM對象)
CSS
經常使用的選擇器選擇器 | 語法 | 描述 |
---|---|---|
標籤選擇器 | E{css規則} |
以文檔元素做爲選擇符 |
ID 選擇器 |
#ID{css規則} |
ID 做爲選擇符 |
類選擇器 | E.className{css規則} |
class 做爲選擇符 |
羣組選擇器 | E1,E2,E3{css規則} |
多個選擇符應用一樣的樣式 |
後代選擇器 | E F{css規則} |
元素E 的任意後代元素F |
選擇器引擎規則($('字符串')
)
css
選擇器的規則
id
選擇器css3
的選擇器規則
狀態和僞類(:even
:odd
:first
:last
:eq(index)
)
[attr=value]
)DOM
的嵌套關係匹配元素
jQuery
層級選擇器—-包含選擇器、子選擇器、相鄰選擇器、兄弟選擇器4種$("a b")
在給定的祖先元素下匹配全部後代元素。(不受層級限制)$("parent > child")
在給定的父元素下匹配全部子元素。$("prev + next")
匹配全部緊接在prev
元素後的next
元素。$("prev ~ siblings")
匹配prev元素以後的全部sibling
元素。選擇器 | 說明 | 返回 |
---|---|---|
:first |
匹配找到的第1個元素 | 單個元素 |
:last |
匹配找到的最後一個元素 | 單個元素 |
:eq |
匹配一個給定索引值的元素 | 單個元素 |
:even |
匹配全部索引值爲偶數的元素 | 集合元素 |
: odd |
匹配全部索引值爲奇數的元素 | 集合元素 |
:gt(index) |
匹配全部大於給定索引值的元素 | 集合元素 |
:lt(index) |
匹配全部小於給定索引值的元素 | 集合元素 |
:not |
去除全部與給定選擇器匹配的元素 | 集合元素 |
:animated |
選取當前正在執行動畫的全部元素 | 集合元素 |
focus |
選取當前正在獲取焦點的元素 | 集合元素 |
選擇器 | 描述 | 返回 |
---|---|---|
:contains(text) |
選取含有文本內容爲text的元素 | 集合元素 |
:empty |
選取不包含子元素獲取文本的空元素 | 集合元素 |
:has(selector) |
選擇含有選擇器所匹配的元素的元素 | 集合元素 |
:parent |
選取含有子元素或者文本的元素 | 集合元素 |
選擇器 | 描述 | 返回 |
---|---|---|
:hidden |
選擇全部不可見的元素 | 集合元素 |
:visible |
選取全部可見的元素 | 集合元素 |
選擇器 | 說明 | 返回 |
---|---|---|
[attribute] |
選取擁有此屬性的元素 | 集合元素 |
[attribute=value] |
選取屬性值爲value 值的元素 |
集合元素 |
[attribue^=value] |
選取屬性的值以value 開始的元素 |
集合元素 |
[attribue$=value] |
選取屬性的值以value 結束的元素 |
集合元素 |
選擇器 | 說明 | 返回 |
---|---|---|
:nth-child(index/even/odd) |
選取每一個父元素下的第index個子元素或者奇偶元素(index 從1 算起) |
集合元素 |
:first-child |
選取每一個元素的第一個子元素 | 集合元素 |
:last-child |
選取每一個元素的最後一個子元素 | 集合元素 |
:nth-child()
選擇器是很經常使用的子元素過濾選擇器,以下
:nth-child(even)
選擇每一個父元素下的索引值是偶數的元素:nth-child(odd)
選擇每一個父元素下的索引值是奇數的元素:nth-child(2)
選擇每一個父元素下的索引值是2
的元素:nth-child(3n)
選擇每一個父元素下的索引值是3的倍數的元素 (n
從1
開始)表單對象屬性過濾選擇器
選擇器 | 說明 | 返回 |
---|---|---|
:enabled |
選取全部可用元素 | 集合元素 |
:disabled |
選取全部不可用元素 | 集合元素 |
:checked |
選取全部被選中的元素(單選框、複選框) | 集合元素 |
:selected |
選取全部被選中的元素(下拉列表) | 集合元素 |
選擇器 | 說明 |
---|---|
:input |
選取全部input textarea select button 元素 |
:text |
選取全部單行文本框 |
:password |
選取全部密碼框 |
:radio |
選取全部單選框 |
:checkbox |
選取全部多選框 |
:submit |
選取全部的提交按鈕 |
:image |
選取全部的圖像按鈕 |
:reset |
選取全部的重置按鈕 |
:button |
選取全部的按鈕 |
:file |
選取全部的上傳域 |
:hidden |
選取全部的不可見元素 |
特定位置選擇器
:first
:last
:eq(index)
指定範圍選擇器
:even
:odd
:gt(index)
:lt(index)
排除選擇器
:not
非使用合適的選擇器表達式能夠提升性能、加強語義並簡化邏輯。經常使用的選擇器中,ID
選擇器速度最快,其次是類型選擇器。
ID
選擇器class
選擇器jQuery
對象使用過濾器
jQuery
提供了2
種選擇文檔元素的方式:選擇器和過濾器hasClass(className)
:判斷當前jQuery
對象中的某個元素是否包含指定類名,包含返回true
,不包含返回false
eq(index)
:獲取第N
個元素。index
是整數值,下標從0
開始filter(expr)/(fn)
:篩選出與指定表達式/函數匹配的元素集合。map(callback)
:將一組元素轉換成其餘數組not(expr)
:刪除與指定表達式匹配的元素slice(start,end)
:選取一個匹配的子集查找
children()
:取得全部元素的全部子元素集合(子元素)find()
:搜索全部與指定表達式匹配的元素(全部後代元素中查找)siblings()
查找當前元素的兄弟代理對象屬性和樣式操做
attr
prop
(通常屬性值是boolean
的值或者不用設置屬性值,通常使用)css
(最好不用,通常我用來作測試)addClass
/ removeClass
操做原生DOM
的時候用的方式:一次只能操做一個
setAttribute
/ getAttribute
style.xx = value
className=''
DOM
的子元素children
屬性DOM
裏面添加一個子元素appendChild()
操做jQuery
代理對象的時候:批量操做DOM
對象(全都是經過方法操做)
操做屬性:attr()
、prop()
attr
和prop
區別:若是屬性的值是布爾類型的值 用prop
操做 反之attr
操做樣式:css()
addClass()
removeClass()
DOM
子元素:children()
append()
DOM
是一種與瀏覽器、平臺|語言無關的接口,使用該接口能夠輕鬆的訪問 頁面中的全部的標準組件
DOM
操做的分類
DOM Core
DOM core
並不專屬於JavaScript
,任何支持DOM
的程序均可以使用JavaScript
中的getElementByID()
getElementsByTagName()
getAttribute()
setAttribute()
等方法都是DOM Core
的組成部分HTML-DOM
HTML -DOM
的出現比DOM-Core
還要早,它提供一些更簡明的標誌來描述HTML
元素的屬性HTML-DOM
來獲取某元素的src
屬性的方法
element.src
CSS-DOM
CSS
的操做。在JavaScript
中,主要用於獲取和設置style
對象的各類屬性,經過改變style
對象的屬性,使網頁呈現不一樣的效果查找節點
attr()
能夠獲取各屬性的值$(html)
:根據傳遞的標記字符串,建立DOM
對象方法 | 說明 |
---|---|
append() |
向每一個匹配元素內部追加內容 |
appendTo() |
顛倒append() 的操做 |
prepend() |
向每一個匹配元素的內容內部前置內容 |
prependTo() |
顛倒prepend() 的操做 |
after() |
向每一個匹配元素以後插入內容 |
insertAfter() |
顛倒after() 的操做 |
before() |
在每一個匹配元素以前插入內容 |
insertBefore() |
顛倒before() 的操做 |
刪除節點
remove()
detach()
empty()
remove()方法
remove()
方法刪除後,仍是能夠繼續使用刪除後的引用detach()
remove()
方法同樣,也是從DOM
中去掉全部匹配的元素,與remove()
不一樣的是,全部綁定的事件、附加的數據等,都會被保留下來empty()
empty()
方法並非刪除節點,而是清空節點,它能清空元素中全部後代節點複製節點
clone()
方法來完成clone()
方法中傳遞一個參數true
,同時複製元素中所綁定的事件替換節點
jQuery
提供相應的方法 replaceWidth()
樣式操做
attr()
addClass()
removeClass()
toggle()
方法只要是控制行爲上的重複切換(若是元素是顯示的,則隱藏;若是元素原來是隱藏的,則顯示)toggleClass()
方法控制樣式上的重複切換(如何類名存在,則刪除它,若是類名不存在,則添加它)hasClass()
能夠用來判斷元素是否含有某個class
,若有返回true
該方法等價於is()
設置和獲取HTML、文本和值
html()
JavaScript
中innerHTML
屬性,能夠用來讀取和設置某個元素中的HTML
內容text()
方法
JavaScript
中innerHTML
,用來讀取和設置某個元素中的文本內容val()
方法
JavaScript
中的value
屬性,用來設置獲取元素的值。不管是文本框、下拉列表仍是單選框,均可以返回元素的值,若是元素多選,返回一個包含全部選擇的值的數組遍歷節點
children()
方法
childre()
方法只考慮子元素而不考慮其餘後代元素next()
方法
prev()
方法
siblings()
方法
parent()
方法
parents()
方法
CSS DOM
技術簡單的來講就是讀取和設置style
對象的各類屬性css()
方法獲取元素的樣式屬性,能夠同時設置多個樣式屬性CSS DOM
中關於元素定位有幾個經常使用的方法
offset()
方法
top
和left
,他只對可見元素有效position()
方法
position()
樣式屬性設置爲relative
或者absolute
的祖父節點的相對偏移,與offset()
同樣,他返回的對象也包括兩個屬性,即top
和left
scrollTop()
方法和scrollLeft
方法
DOM
:Document Object Model
縮寫,文檔對象模型document.createElement(name)
;
1
2
|
var div = document.createElement("div");
document.body.appendChild(div);
|
$(html)
:根據傳遞的標記字符串,建立DOM對象
2.建立文本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
var div = document.createElement("div");
var txt = document.createTextNode("DOM");
div.appendChild(txt);
document.body.appendChild(div);
var $div = = $("<div>DOM</div>");
$(body).append($div);
```
- 3.設置屬性
- 語法:`e.setAttrbute(name,value)
`
`
``javascript
var div = document.createElement("div");
var txt = document.createTextNode("DOM");
div.appendChild(txt);
document.body.appendChild(div);
div.setAttribute(
"title","盒子");
var $div = = $("<div title='盒子'>DOM</div>");
$(body).append($div);
|
內部插入
append()
:向每一個匹配的元素內部追加內容appendTo()
:把全部匹配的元素追加到指定元素集合中,$("A").append("B")
等效 $("B").appendTo("A")
prepend()
:把每一個匹配的元素內部前置內容prependTo()
:把全部匹配的元素前置到另外一個指定的元素集合中,$("A").prepend("B")
等效 $("B").prependTo("A")
外部插入
after()
:在每一個匹配的元素以後插入內容before()
:在每一個匹配想元素以前插入內容insertAfter()
:將全部匹配的元素插入到另外一個指定的元素集合後面,$A.insert($B)
等效$B.insertAfter($A);
insertBefore()
:將全部匹配的元素插入到另外一個指定的元素集合前面 $A.before($B)
等效 $B.insertBefore($A)
;remove()
:從DOM
中刪除全部匹配元素empty()
:刪除匹配的元素集合中全部子節點內容clone()
clone(true)
則是包括克隆元素的屬性,事件等replaceWith()
:將全部匹配的元素替換成指定的元素replaceAll()
:用匹配的元素替換掉指定元素$A.replaceAll($B)
等效於 $B.replaceWhith($A)
;JavaScrip
t語言自己不支持動畫設計,必須經過改變CSS
來實現動畫效果顯隱動畫
show()
:顯示 hide()
:隱藏
hide()
經過改變元素的高度寬度和不透明度,直到這三個屬性值到0
show()
從上到下增長元素的高度,從左到右增長元素寬度,從0
到1
增長透明度,直至內容徹底可見show(speed,callback)
speed
: 字符串或數字,表示動畫將運行多久(slow=0.6
/normal=0.4
/fast=0.2
)callback
: 動畫完成時執行的方法顯示和隱藏式一對密不可分的動畫形式
顯隱切換
toggle()
:切換元素的可見狀態
display
設置爲none
toggle(speed)
toggle(speed,callback)
toggle(boolean)
speed
: 字符串或數字,表示動畫將運行多久(slow=0.6
/normal=0.4
/fast=0.2
)easing
: 使用哪一個緩衝函數來過渡的字符串(linear
/swing
)callback
: 動畫完成時執行的方法boolean
:true
爲顯示 false
爲隱藏滑動
顯隱滑動效果
slideDown()
:滑動隱藏slidUp()
:滑動顯示
參數:
slideDown(speed,callback)
slidUp(speed,callback)
顯隱切換滑動
slideToggle()
:顯隱滑動切換slidUp(speed,callback)
漸變:經過改變不透明度
淡入淡出
fadeIn()
fadeOut()
參數:
fadeIn(speed,callback)
fadeOut(speed,callback)
設置淡出透明效果
fadeTo()
:以漸進的方式調整到指定透明度
參數:
fadeTo(speed,opacity,callback)
漸變切換:結合fadeIn
和fadeOut
fadeToggle()
參數:
fadeOut(speed,callback)
animate()
animate
方法以前,爲了影響該元素的top
left
bottom
right
樣式屬性,必須先把元素的position
樣式設置爲relative
或者absolute
stop()
語法結構:stop([clearQueue],[gotoEnd]);
stop()
方法,會當即中止當前正在進行的動畫if(!$(element).is(":animated")){ //判斷元素是否處於動畫狀態}
animate
動畫中常常被用到,須要注意delay()
用animate
模擬show()
:
show
: 表示由透明到不透明toggle
: 切換hide
:表示由顯示到隱藏動畫方法總結
方法名 | 說明 |
---|---|
hide() 和show() |
同時修改多個樣式屬性即高度和寬度和不透明度 |
fadeIn() 和fadeOut() |
只改變不透明度 |
slideUp() 和slideDown() |
只改變高度 |
fadeTo() |
只改變不透明度 |
toggle() |
用來代替show() 和hide() 方法,因此會同時修改多個屬性即高度、寬度和不透明度 |
slideToggle() |
用來代替slideUp 和slideDown() 方法,因此只能改變高度 |
fadeToggle() |
用來代替fadeIn() 和fadeOut 方法,只能改變不透明度 |
animate() |
屬於自定義動畫,以上各類動畫方法都是調用了animate 方法。此外,用animate 方法還能自定義其餘的樣式屬性,例如:left marginLeft ``scrollTop 等 |
事件對象的屬性
event.type
:獲取事件的類型event.target
:獲取到觸發事件的元素event.preventDefault
方法 阻止默認事件行爲event.stopPropagation()
阻止事件的冒泡keyCode
:只針對於keypress
事件,獲取鍵盤鍵數字 按下回車,13
event.pageX / event.pageY
獲取到光標相對於頁面的x
座標和y
座標
jQuery
,在IE瀏覽器中用event.x
/ event.y
;在Firefox
瀏覽器中用event.pageX
/ event.pageY
。若是頁面上有滾動條還要加上滾動條的寬度和高度event.clientX
:光標對於瀏覽器窗口的水平座標 瀏覽器
event.clientY
:光標對於瀏覽器窗口的垂直座標
event.screenX
:光標對於電腦屏幕的水平座標 電腦屏幕
event.screenY
:光標對於電腦屏幕的水平座標event.which
該方法的做用是在鼠標單擊事件中獲取到鼠標的左、中、右鍵,在鍵盤事件中的按鍵 1
表明左鍵 2
表明中鍵 3
表明右鍵事件冒泡
jQuery
中提供了stopPropagation()
方法jQuery
中提供了preventDefault()
方法來阻止元素的默認行爲JavaScript
來修復。jQuery
不支持事件捕獲,如須要用事件捕獲,要用原生的JavaScript
bind()
;綁定
爲匹配元素綁定處理方法
須要給一個元素添加多個事件 ,事件執行同樣時候
one()
:只執行一次分類 | 方法名稱 | 說明 |
---|---|---|
頁面載入 | ready(fn) |
當DOM 載入就緒能夠綁定一個要執行的函數 |
事件綁定 | blind(type,[data],fn) |
爲每一個匹配元素的特定事件綁定一個事件處理函數 |
事件綁定 | unblind() |
解除綁定 |
事件綁定 | on(events,[,selector[,]data],handler) |
在選擇元素上綁定一個或者多個事件處理函數 |
事件綁定 | off() |
移除on 綁定的事件 |
事件綁定 | delegate(selector,eventType,handler) |
爲全部選擇匹配元素附加一個或多個事件處理函數 |
事件綁定 | undelegate() |
移除綁定 |
事件動態 | live(type,fn) |
對動態生成的元素進行事件綁定 |
事件動態 | die(type,fn) |
移除live() 綁定的事件 |
交互事件 | hover() |
鼠標移入移出 |
交互事件 | toggle(fn1,fn2,[fn3],[fn4]) |
每單擊後依次調用函數 |
交互事件 | blur(fn) |
觸發每個匹配元素的blur 事件 |
交互事件 | change() |
觸發每個匹配元素的change 事件 |
交互事件 | click() |
觸發每個匹配元素的click 事件 |
交互事件 | focus() |
觸發每個匹配元素的focus 事件 |
交互事件 | submit() |
觸發每個匹配元素的submit 事件 |
鍵盤事件 | keydown() |
觸發每個匹配元素的keydown 事件 |
鍵盤事件 | keypress() |
觸發每個匹配元素的keypress 事件 |
鍵盤事件 | keyup() |
觸發每個匹配元素的keyup事件 |
鼠標事件 | mousedown(fn) |
綁定一個處理函數 |
鼠標事件 | mouseenter(fn) |
綁定一個處理函數 |
鍵盤事件 | mouseleave(fn) |
綁定一個處理函數 |
鍵盤事件 | mouseout(fn) |
綁定一個處理函數 |
鍵盤事件 | mouseover(fn) |
綁定一個處理函數 |
窗口操做 | resize(fn) |
綁定一個處理函數 |
窗口操做 | scroll(fn) |
綁定一個處理函數 |
Asynchronous Javascript And XML
(異步的JavaScript
和XML
)Ajax
優點與不足
Ajax
優點
Ajax
下最大的有點,能在不刷新整個頁面前提下更新數據web
程序的性能
Ajax
模式在性能上最大的區別在於傳輸數據的方式,在傳統模式中,數據的提交時經過表單來實現的。Ajax
模式只是經過XMLHttpRequest
對象向服務器提交但願提交的數據,即按需發送Ajax
的工做原理至關於在用戶和服務器之間加了一箇中間層,似用戶操做與服務器響應異步化。它在客戶端建立Ajax
引擎,把傳統方式下的一些服務器負擔的工做轉移到客戶端,便於客戶端資源來處理,減輕服務器和帶寬的負擔XMLHttpRequest
對象的支持度不足Ajax
的核心是XMLHttpRequest
對象,它是Ajax
實現的關鍵,發送異步請求、接受響應以及執行回調都是經過它來完成
建立ajax
對象 var xhr = new XMLHttpRequest();
準備發送請求
get
/ post
get
URL
後面encodeURI( '' )
;post
send()
裏面,而且必定要規定數據格式form
表單中:
action
:
method
: (默認是get
)get
: 會在url
裏面以 name=value
, 兩個數據之間用 &
鏈接post
:enctype
: "application/x-www-form-urlencoded"
url
是否異步
false
):阻塞true
):非阻塞正式發送請求
ajax
請求處理過程
1
2
3
4
5
6
|
xhr.onreadystatechange =
function(){
if (xhr.readyState == 4)
{
alert( xhr.responseText );
}
};
|
onreadystatechange
:當處理過程發生變化的時候執行下面的函數
readyState
:ajax
處理過程
open()
)。send()
)。responseText
:請求服務器返回的數據存在該屬性裏面
status
: http
狀態碼ajax
封裝案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
//ajax請求後臺數據
var btn = document.getElementsByTagName("input")[0];
btn.onclick =
function(){
ajax({
//json格式
type:
"post",
url:"post.php",
data:"username=poetries&pwd=123456",
asyn:true,
success:function(data){
document.write(data);
}
});
}
//封裝ajax
function ajax(aJson){
var ajx = null;
var type = aJson.type || "get";
var asyn = aJson.asyn || true;
var url = aJson.url; // url 接收 傳輸位置
var success = aJson.success;// success 接收 傳輸完成後的回調函數
var data = aJson.data || '';// data 接收須要附帶傳輸的數據
if(window.XMLHttpRequest){//兼容處理
ajx =
new XMLHttpRequest();//通常瀏覽器
}
else
{
ajx =
new ActiveXObject("Microsoft.XMLHTTP");//IE6+
}
if (type == "get" && data)
{
url +=
"/?"+data+"&"+Math.random();
}
//初始化ajax請求
ajx.open( type , url , asyn );
//規定傳輸數據的格式
ajx.setRequestHeader(
'content-type','application/x-www-form-urlencoded');
//發送ajax請求(包括post數據的傳輸)
type ==
"get" ?ajx.send():ajx.send(aJson.data);
//處理請求
ajx.onreadystatechange =
function(aJson){
if(ajx.readState == 4){
if (ajx.status == 200 && ajx.status<300)//200是HTTP 請求成功的狀態碼
{
//請求成功處理數據
success && success(ajx.responseText);
}
else{
alert(
"請求出錯"+ajx.status);
}
}
};
|
jquery
對Ajax
操做進行了封裝,在jquery
中的$.ajax()
方法屬於最底層的方法,第2
層是load()
、$.get()
、$.post();
第3
層是$.getScript()
、$.getJSON()
,第2
層使用頻率很高
load()
方法load()
方法是jquery
中最簡單和經常使用的ajax
方法,能載入遠程HTML
代碼並插入DOM
中 結構爲:load(url,[data],[callback])
url
參數指定選擇符能夠加載頁面內的某些元素 load
方法中url
語法:url selector
注意:url
和選擇器之間有一個空格load()
方法的傳遞方式根據參數data
來自動指定,若是沒有參數傳遞,則採用GET
方式傳遞,反之,採用POST
XMLHttpRequest
對象
1
2
3
4
5
|
$(
"#testTest").load("test.html",function(responseText,textStatus,XMLHttpRequest){
//respnoseText 請求返回的內容
//textStatus 請求狀態 :sucess、error、notmodified、timeout
//XMLHttpRequest
})
|
參數名稱 | 類型 | 說明 |
---|---|---|
url |
String |
請求HTML 頁面的URL 地址 |
data(可選) |
Object |
發送至服務器的key / value 數據 |
callback(可選) |
Function |
請求完成時的回調函數,不管是請求成功仍是失敗 |
load()
方法一般用來從web服務器上獲取靜態的數據文件。在項目中須要傳遞一些參數給服務器中的頁面,那麼可使用$.get()
和$.post()
或$.ajax()
方法
注意:$.get()
和$.post()
方法是jquery
中的全局函數
$.get()方法
$.get()
方法使用GET
方式來進行異步請求$.get(url,[data],callback,type)
xml
文檔,須要在服務器端設置Content-Type
類型 代碼以下:header("Content-Type:text/xml:charset=utf-8")
//php
$.get()
方法參數解析參數 | 類型 | 說明 |
---|---|---|
url |
String |
請求HTML 頁的地址 |
data(可選) |
Object |
發送至服務器的key / value 數據會做爲QueryString 附加到請求URL中 |
callback(可選) |
Function |
載入成功的回調函數(只有當Response 的返回狀態是success才調用該方法) |
type(可選) |
String |
服務器返回內容的格式,包括xml 、html 、script 、json 、text 和_default |
$.post()方法
$.get()
方法的結構和使用方式相同,有以下區別
GET
請求會將參數跟張乃URL後進行傳遞,而POST
請求則是做爲Http
消息的實體內容發送給web服務器,在ajax
請求中,這種區別對用戶不可見
GET
方式對傳輸數據有大小限制(一般不能大於2KB
),而使用POST
方式傳遞的數據量要比GET
方式大得多(理論不受限制)GET
方式請求的數據會被瀏覽器緩存起來,所以其餘人能夠從瀏覽器的歷史紀錄中讀取這些數據,如:帳號、密碼。在某種狀況下,GET
方式會帶來嚴重的安全問題,而POST
相對來講能夠避免這些問題GET
和POST
方式傳遞的數據在服務端的獲取也不相同。在PHP
中,GET
方式用$_GET[]
獲取;POST
方式用$_POST[]
獲取;兩種方式均可用$_REQUEST[]
來獲取總結
load()
、$.get()
和$.post()
方法完成了一些常規的Ajax
程序,若是還須要複雜的Ajax
程序,就須要用到$.ajax()
方式$.ajax()
方法是jquery
最底層的Ajax
實現,它的結構爲$.ajax(options)
$.ajax()
方式所須要的請求設置以及回調函等信息,參數以key
/ value
存在,全部參數都是可選的參數 | 類型 | 說明 |
---|---|---|
url |
String |
(默認爲當前頁地址)發送請求的地址 |
type |
String |
請求方式(POST 或GET )默認爲GET |
timeout |
Number |
設置請求超時時間(毫秒) |
dataType |
String |
預期服務器返回的類型。可用的類型以下 xml:返回 XML 文檔,可用jquery 處理html:返回純文本的 HTML 信息,包含的script 標籤也會在插入DOM 時執行script:返回純文本的 javascript 代碼。不會自動緩存結果,除非設置cache 參數。注意:在遠程請求時,全部的POST 請求都將轉爲GET 請求json:返回 JSON 數據jsonp: JSONP 格式,使用jsonp 形式調用函數時,例如:myurl?call back=?,jquery 將自動替換後一個? 爲正確的函數名,以執行回調函數text:返回純文本字符串 |
beforeSend |
Function |
發送請求前能夠修改XMLHttpRequest 對象的函數,例如添加自定義HTTP 頭。在beforeSend 中若是返回false 能夠取消本次Ajax 請求。XMLHttpRequest 對象是惟一的參數function(XMLHttpRequest){ this ;//調用本次Ajax 請求時傳遞的options 參數} |
complete |
Function |
請求完成後的回調函數(請求成功或失敗時都調用) 參數: XMLHttpRequest 對象和一個描述成功請求類型的字符串function(XMLHttpRequest,textStatus){ this ;//調用本次Ajax請求時傳遞的options 參數} |
success |
Function |
請求成功後調用的回調函數,有兩個參數 (1)由服務器返回,並根據 dataTyppe 參數進行處理後的數據(2)描述狀態的字符串 function (data,textStatus){// data 多是xmlDoc、``jsonObj 、html 、text 等this ;//調用本次Ajax 請求時傳遞的options 參數} |
error |
Function |
請求失敗時被調用的函數 |
global |
Boolean |
默認爲true 。表示是否觸發全局Ajax 事件,設置爲false 將不會觸發。AjaxStart 或AjaxStop 可用於控制各類Ajax 事件 |
什麼是插件
Plugin
)也稱爲jQuery
的擴展。以jQuery
核心代碼爲基礎編寫的符合必定規範的應用程序。經過js
文件的方式引用。插件分爲哪幾類
UI
類、表單及驗證類、輸入類、特效類、Ajax
類、滑動類、圖形圖像類、導航類、綜合工具類、動畫類等等jquery.js
文件,並且在因此插件以前引入如何自定義插件:
find()
)自定義插件的規範(解決各類插件的衝突和錯誤,增長成功率)
jquery.插件名.js
jquery.fn
對象上面,全部新功能附加在jquery
上$
,若是要使用,請傳遞jQuery
($
並非總等於jQuery
,另外其餘js
框架也可能使用$
)this
應該指向jQuery
對象this.each()
迭代元素自定義插件案例
jQuery
提供了 jQuery.extend()
和 jQuery.fn.extend()
jQuery.extend()
:建立工具函數或者是選擇器jQuery.fn.extend()
:建立jQuery
對象命令 (fn
至關於prototype
的別名)jQuery
官方提供的插件開發模板
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
;(
function($){
$.fn.plugin=
function(options){
var defaults = {
//各類參數 各類屬性
}
var options = $.extend(defaults,options);
this.each(function(){
//實現功能的代碼
});
return this;
}
})(jQuery);
|
自定義jQuery
函數:
1
2
3
4
5
6
7
|
(
function($){
$.extend({
test: function(){
alert(
"hello plugin");
}
})
})(jQuery);
|
自定義jQuery
命令:
1
2
3
4
5
6
7
|
(
function($){
$.fn.extend({
say : function(){
alert(
"hello plugin");
}
})
})(jQuery);
|
1
2
3
4
5
6
|
(
function($){
$.fn.say =
function(){
alert(
"hello plugin");
};
})(jQuery);
|
jQuery1.3
新增經常使用的方法方法 | 說明 |
---|---|
.closest() |
從元素自己開始,逐級向上級元素匹配,並返回最早匹配的祖先元素 |
die() |
從元素中刪除先前用live() 方法綁定的全部的事件 |
live() |
附加一個事件處理器到符合目前選擇器的全部元素匹配 |
jQuery1.4
新增經常使用的方法方法 | 說明 |
---|---|
.first() |
獲取集合中第一個元素 |
last() |
獲取集合中最後一個元素 |
has(selector) |
保留包含特定後代的元素,去掉那些不含有指定後代的元素 |
detach() |
從DOM 中去掉全部匹配的元素。detach() 和remov() 同樣,除了detach() 保存了全部jquery 數據和被移走的元素相關聯。當須要移走一個元素,不久又將該元素插入DOM 時,這種方法頗有用 |
delegate() |
爲全部選擇器匹配的元素附加一個處理一個或多個事件 |
undelegate() |
爲全部選擇器匹配的元素刪除一個處理一個或多個事件 |
jQuery1.6
新增經常使用的方法方法 | 說明 |
---|---|
prop(proptyName) |
獲取在匹配元素集合中的第一個元素的屬性值 |
removeProp(proptyName,value) |
爲匹配的元素刪除設置的屬性 |
:focus |
選擇當前獲取焦點的元素 |
性能優化
$(#id)
id
來定位DOM
元素是最佳的方式,爲了提升性能,建議從最近的ID
元素開始往下搜索$("p")
, $("div")
, $("input")
jQuery
將直接調用本地方法document.getElementsByTagName()
來定位DOM
元素$(".class")
$("[attribute=value]")
DOM
元素,本地JavaScript
並無直接實現。這種方式性能並非很理想。建議避免使用。$(":hidden")
DOM
方式相似,建議儘可能不要使用ID
選擇器jQuery
對象,你能夠把他們緩存在全局環境中jQuery
對象
jQuery
選擇器獲取的結果是一個jQuery
對象。在性能方面,建議使用for
或while
循環來處理,而不是$.each()
JavaScript
事件(如:click
、mouseove
r)都會冒泡到父級節點。當咱們須要給多個元素調用同個函數時這點頗有用。好比,咱們要爲一個表單綁定這樣的行爲:點擊td後,把背景顏色設置爲紅色
$("#myTable td").click(function(){$(this).css("background","red");});
100
個td
元素,在使用以上的方式時,綁定了100
個事件,將帶來性能影響event.target
獲取到點擊的當前元素
$("#myTable td").click(function({$(e.target).css("background","red")});
e.target
捕捉到觸發的目標jQuery1.7
中提供了一個新的方法on()
,來幫助你將整個事件監聽封裝到一個便利的方法中
$("#myTable td").on("click",'td',function(){$(this).css("background","red");});
使用join()方法來拼接字符串
+
來拼接字符串,如今能夠改了。它確實有助於性能優化,尤爲是長字符串處理的時候合理使用HTML5和Data屬性
HTML5
的data
屬性能夠幫助咱們插入數據,特別是後端的數據交換。jQuery
的Data()
方法有效利用HTML5
的屬性
<div id="dl" data-role="page" data-list-value="43" data-options='{"name:""John"}'>
$("#dl').data("role';//page)
$("#dl').data("lastValue';//43)
$("#dl').data("options';//john)
儘可能使用原生的JavaScript方法
Gzip
;另外一方面去除JavaScript
文件裏面的註釋、空白
1
2
3
4
5
|
$(
document).ready(functuion(){
$(
document).bind("contextmenu",function(e){
return false;
});
});
|
1
2
3
4
5
6
7
8
9
10
11
|
$(
document).ready(function(){
//例子1:href="http://"的連接將會在新窗口打開連接
$(
'a[href=^="http://"]').attr("target","_blank");
//例子2:rel="external"的超連接將會在新窗口打開連接
$(
"a[rel$='external']").click(function(){
this.target = "_blank";
});
});
//use
<a href=
"http://baidu.com" rel="external">open</a>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
$(
document).reday(function(){
//Firefox2 and above
if( $.browser.mozilla && $.browser.version>="1.8"){
//do something
}
// Safari
if($.browser.safari){
//do something
}
// Chrome
if($.browser.chrome){
//do something
}
// Opera
if($.browser.opera){
//do something
}
})
// IE6 and blow
if($.browser.msie && $.browser.version<=6){
//do something
}
// anything above IE6
if($.browser.msie && $.browser.version > 6){
//do something
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$(
document).ready(function(){
$(
"input.text1").val("Enter you search text here");
textFill($(
'input.text1'));
});
function textFill(input){//input focus text function
var originvalue = input.val();
input.focus(funtion(){
if($.trim(input.val())== originvalue){
input.val(
' ');
}
}).blur(
function(){
if($.trim(input.val()) == ' '){
input.val(originalvalue);
}
})
}
|
1
2
3
4
5
6
|
$(
document).ready(function(){
$(
document).mousemove(function(e){
$(
"#XY").html("X:" + e.pageX+ "| Y" + e.pageY);
});
});
|
1
2
3
4
5
|
$(
document).ready(function(){
if($("#id").length){
// do some thing
}
})
|
1
2
3
4
5
6
7
|
$(
"div").click(function(){
window.location = $(this).find("a").attr("href");
})
//use
<div>
<a href="index.html">home</a></div>
|
1
2
3
4
5
6
7
8
9
10
11
|
$(
document).ready(function(){
jQuery.fn.center =
function(){
this.css("position","absolute");
this.css("top",($(window).height() - this.lenght()) / 2 +$(window).scrollTop() + "px");
this.css("left",($(window).height() - this.lenght()) / 2 +$(window).scrollLeft() + "px");
return this;
}
//use
$(
"#XY").center();
});
|
1
2
3
|
$(
document).ready(function(){
jQuery.fx.off =
true;
});
|
1
2
3
4
5
|
$(
document).ready(function(){
$(
"#xy").mousedown(function(e){
alert(e.which);
//1 = 鼠標左鍵 2= 鼠標中間 3 = 鼠標右鍵
});
});
|
1
2
3
4
5
6
7
|
$(
document).ready(function(){
$(
"input").keyup(function(e){
if(e.which == "13"){
alert(
"回車提交");
}
})
});
|
1
2
3
4
5
6
7
8
|
$(
"#load").ajaxStart(function(){
showLoading();
//顯示loading
disableButtons()
//禁用按鈕
})
$(
"#load").ajaxComplete(function(){
hideLoading();
//隱藏loading
enableButtons();
//啓用按鈕
})
|
1
2
|
$(
"#someElement").find('option:selected');
$(
"#someElement option:selected");
|
1
2
3
4
5
|
var tog = false;
$("button").click(function(){
$("input[type=checkbox]').attr("checked",!tog);
tog = !tog;
});
|
1
2
3
4
5
|
$(
document).ready(function(){
$(
"a[href$='pdf']").addClass("pdf");
$(
"a[href$='zip']").addClass("zip");
$(
"a[href$='psd']").addClass("psd");
});
|
1
2
3
4
5
6
|
setTimeOut(
function(){
$(
"div").fadeIn(400);
},
3000);
//而在1.4以後的版本能夠用delay()來實現
$(
"div").slideUp(300).delay(3000).fadeIn(400);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//爲table裏面的td元素綁定click事件,無論td是一直存在仍是動態建立的
//jQuery 1.4.2以前使用這種方式
$(
"table").each(function(){
$(
"td",this).live("click",function(){
$(
this).toggleClass("hover");
});
});
//jquery 1.4.2使用的方式
$(
"table").delegate("td","click",function(){
$(
this).toggleClass("hover");
});
//jQuery1.7.1使用的方式
$(
"table").on("click","td",function(){
$(
this).toggleClass("hover");
})
|
1
2
3
4
5
6
7
8
9
10
11
12
|
(
function($) {
var cache = [];
// Arguments are image paths relative to the current page.
$.preLoadImages =
function() {
var args_len = arguments.length;
for (var i = args_len; i--;) {
var cacheImage = document.createElement('img');
cacheImage.src =
arguments[i];
cache.push(cacheImage);
}
}
jQuery.preLoadImages(
"image1.gif", "/path/to/image2.png");
|
1
2
3
4
5
6
7
8
9
10
11
|
var scr = document.createElement('script');
scr.setAttribute(
'src', 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js');
document.body.appendChild(scr);
scr.onload =
function(){
$(
'div').attr('class', '').attr('id', '').css({
'margin' : 0,
'padding' : 0,
'width': '100%',
'clear':'both'
});
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
$(
window).bind("load", function() {
// IMAGE RESIZE
$(
'#product_cat_list img').each(function() {
var maxWidth = 120;
var maxHeight = 120;
var ratio = 0;
var width = $(this).width();
var height = $(this).height();
if(width > maxWidth){
ratio = maxWidth / width;
$(
this).css("width", maxWidth);
$(
this).css("height", height * ratio);
height = height * ratio;
}
var width = $(this).width();
var height = $(this).height();
if(height > maxHeight){
ratio = maxHeight / height;
$(
this).css("height", maxHeight);
$(
this).css("width", width * ratio);
width = width * ratio;
}
});
//$("#contentpage img").show();
// IMAGE RESIZE
});
|
1
2
3
4
5
6
7
8
|
// Back To Top
$(
document).ready(function(){
$(
'.top').click(function() {
$(
document).scrollTo(0,500);
});
});
//Create a link defined with the class .top
<a href=
"#" class="top">Back To Top</a>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
var accordion = {
init: function(){
var $container = $('#accordion');
$container.find(
'li:not(:first) .details').hide();
$container.find(
'li:first').addClass('active');
$container.on(
'click','li a',function(e){
e.preventDefault();
var $this = $(this).parents('li');
if($this.hasClass('active')){
if($('.details').is(':visible')) {
$
this.find('.details').slideUp();
}
else {
$
this.find('.details').slideDown();
}
}
else {
$container.find(
'li.active .details').slideUp();
$container.find(
'li').removeClass('active');
$
this.addClass('active');
$
this.find('.details').slideDown();
}
});
}
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$(function(){
$("select#ctlJob").change(function(){
$.getJSON("/select.php",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '
' + j[i].optionDisplay + '
';
}
$("select#ctlPerson").html(options);
})
})
})
|
1
2
3
4
5
6
7
8
|
// Safe Snippet
$(
"img").error(function () {
$(
this).unbind("error").attr("src", "missing_image.gif");
});
// Persistent Snipper
$(
"img").error(function () {
$(
this).attr("src", "missing_image.gif");
});
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$(
document).ready(function() {
$(
'form').submit(function() {
if(typeof jQuery.data(this, "disabledOnSubmit") == 'undefined') {
jQuery.data(
this, "disabledOnSubmit", { submited: true });
$(
'input[type=submit], input[type=button]', this).each(function() {
$(
this).attr("disabled", "disabled");
});
return true;
}
else
{
return false;
}
});
});
|
1
2
3
4
5
|
//change event on password1 field to prompt new input
$(
'#password1').change(function() {
//dynamically create new input and insert after password1
$(
"#password1").append("");
});
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
var loading = false;
$(
window).scroll(function(){
if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){
if(loading == false){
loading =
true;
$(
'#loadingbar').css("display","block");
$.get(
"load.php?start="+$('#loaded_max').val(), function(loaded){
$(
'body').append(loaded);
$(
'#loaded_max').val(parseInt($('#loaded_max').val())+50);
$(
'#loadingbar').css("display","none");
loading =
false;
});
}
}
});
$(
document).ready(function() {
$(
'#loaded_max').val(50);
});
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<ul id='nav'>
<li>導航一</li>
<li>導航二</li>
<li>導航三</li>
</ul>
//注意:代碼須要修飾完善
$('#nav').click(function(e) {
// 要知道siblings的使用
$(e.target).addClass('tclass').siblings('.tclass').removeClass('tclass');;
});
|
jQuery
, prototype
共存,$
全局變量衝突問題
1
2
3
4
5
|
<script src=
"prototype.js"></script>
<script src=
"http://blogbeta.blueidea.com/jquery.js"></script>
<script type=
"text/javascript"> jQuery.noConflict();</script>
注意:必定要先引入prototype.js 再引入jquery.js,前後順序不可錯
|
1
2
3
4
5
|
//jQuery event封裝支持判斷元素上是否綁定了事件,此方法只適用於jQuery綁定的事件
var $events = $("#foo").data("events");
if( $events && $events["click"] ){
//your code
}
|
toggleClass
1
2
3
4
5
|
//切換(toggle)類容許你根據某個類的//是否存在來添加或是刪除該類。
//這種狀況下有些開發者使用:
a.hasClass(
'blueButton') ? a.removeClass('blueButton') : a.addClass('blueButton');
//toggleClass容許你使用下面的語句來很容易地作到這一點
a.toggleClass(
'blueButton');
|
1
2
3
|
if ($.browser.msie) {
// Internet Explorer就是個虐待狂
}
|
1
2
3
4
5
6
7
8
|
// 方法一
if (! $('#keks').html()) {
//什麼都沒有找到;
}
// 方法二
if ($('#keks').is(":empty")) {
//什麼都沒有找到;
}
|
1
2
3
|
var iFrameDOM = $("iframe#someID").contents();
//而後,就能夠經過find方法來遍歷獲取iFrame中的元素了
iFrameDOM.find(
".message").slideUp();
|
JQuery
1
2
3
4
5
6
7
|
$(
"#searchbox") .focus(function(){
$(
this).val('')
}) .blur(
function(){
var $this = $(this);
// '請搜索...'爲搜索框默認值
($
this.val() === '')? $this.val('請搜索...') : null;
});
|
web
性能,有更新時咱們一般不會加載整個頁面,而只是僅僅更新部分頁面內容,如圖片的延遲加載等。頁面部分刷新的特效在JQuery
中也很容易實現
1
2
3
4
|
setInterval(
function() {
//每隔5秒鐘刷新頁面內容 //獲取的內容將增長到 id爲content的元素後
$(
"#content").load(url); }, 5000);
|
JQuery
,$
是最經常使用的變量名,但JQuery
並非惟一一個使用$
做爲變量名的庫,爲了不命名衝突,你能夠按照下面方式來組織你的代碼
1
2
3
4
5
6
7
8
|
//方法一: 爲JQuery從新命名爲
$jvar $j = jQuery.noConflict();$j(
'#id').... //
方法二: 推薦使用的方式
(
function($){ $(document).ready(function(){
//這兒,你能夠正常的使用JQuery語法 });
})(jQuery);
|
1
|
<input type="password" name="pass" id="pass" /> <span id="passstrength"></span>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//下面的正則表達式建議各位收藏哦,項目上有可能會用得着
$(
'#pass').keyup(function(e) {
//密碼爲八位及以上而且字母數字特殊字符三項都包括
var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
//密碼爲七位及以上而且字母、數字、特殊字符三項中有兩項,強度是中等
var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{6,}).*", "g");
if (false == enoughRegex.test($(this).val())) {
$(
'#passstrength').html('More Characters'); }
else if (strongRegex.test($(this).val())) {
$(
'#passstrength').className = 'ok';
$(
'#passstrength').html('Strong!'); }
else if (mediumRegex.test($(this).val())) {
$(
'#passstrength').className = 'alert';
$(
'#passstrength').html('Medium!'); }
else {
$(
'#passstrength').className = 'error';
$(
'#passstrength').html('Weak!');
}
return true;
});
|
jQuery
插件
jQuery