官方網站:http://jquery.com
jQuery是一款同prototype一樣優秀js開發庫類,特別是對css和XPath的支持,使我們寫js變得更加方便!如果你不是個js高手又想寫出優 秀的js效果,jQuery可以幫你達到目的!
下載地址:Starterkit (http://jquery.bassistance.de/jquery-starterkit.zip)
jQuery Downloads (http://jquery.com/src/)
下載完成后先加載到文檔中,然后我們來看個簡單的例子!
$(document).ready(function(){
$("a").click(function() {
alert("Hello world!");
});
});
<script>
上邊的效果是點擊文檔中所有a標簽時將彈出對話框,$("a") 是一個jQuery選擇器,$本身表示一個jQuery類,所有$()是構造一個jQuery對象,click()是這個對象的方法,同理$(document)也是一個jQuery對象,ready(fn)是$(document)的方法,表示當document全部下載完畢時執行函數。
在進行下面內容之前我還要說明一點$("p")和$("#p")的區別,$("p")表示取所有p標簽(<p></p>)的元素,$("#p")表示取id為"p"(<span id="p"></span>)的元素.
我將從以下幾個內容來講解jQuery的使用:
1:核心部分
2:DOM操作
3:css操作
4:javascript處理
5:動態效果
6:event事件
7:ajax支持
8:插件程序
一:核心部分
$(expr)
說明:該函數可以通過css選擇器,Xpath或html代碼來匹配目標元素,所有的jQuery操作都以此為基礎
參數:expr:字符串,一個查詢表達式或一段html字符串
例子:
未執行jQuery前:




<p>three</p>
<a href="#" id="test" onClick="jq()" >jQuery</a>
jQuery代碼及功能:
alert($("div > p").html());
}
$("<div><p>Hello</p></div>").appendTo("body");
}
$(elem)
說明:限制jQuery作用于一個特定的dom元素,這個函數也接受xml文檔和windows對象
參數: elem:通過jQuery對象壓縮的DOM元素
例子:
未執行jQuery前:
<div>
<p>two</p>
</div><p>three</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
alert($(document).find("div > p").html());
}
$(document.body).background("black");
}
$(elems)
說明:限制jQuery作用于一組特定的DOM元素
參數: elem:一組通過jQuery對象壓縮的DOM元素
例子:
未執行jQuery前:





$(form1.elements ).hide();
}
$(fn)
說明:$(document).ready()的一個速記方式,當文檔全部載入時執行函數。可以有多個$(fn)當文檔載入時,同時執行所有函數!
參數:fn (Function):當文檔載入時執行的函數!
例子:
$(document.body).background("black");
})
$(obj)
說明:復制一個jQuery對象,
參數:obj (jQuery): 要復制的jQuery對象
例子:
未執行jQuery前:
<div>
<p>two</p>
</div>
<p>three</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
var f = $("div");
alert($(f).find("p").html())
}
each(fn)
說明:將函數作用于所有匹配的對象上
參數:fn (Function): 需要執行的函數
例子:
未執行jQuery前:
<img src="1.jpg"/>
<a href="#" id="test" onClick="jq()">jQuery</a>
$("img").each(function(){
this.src = "2.jpg"; });
}
eq(pos)
說明:減少匹配對象到一個單獨得dom元素
參數:pos (Number): 期望限制的索引,從0 開始
例子:
未執行jQuery前:



alert($("p").eq(1).html())
}
get() get(num)
說明:獲取匹配元素,get(num)返回匹配元素中的某一個元素
參數:get (Number): 期望限制的索引,從0 開始
例子:
未執行jQuery前:
<p>So is this</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
alert($("p").get(1).innerHTML);
}
注意get和eq的區別,eq返回的是jQuery對象,get返回的是所匹配的dom對象,所有取$("p").eq(1)對象的內容用jQuery方法html(),而取$("p").get(1)的內容用innerHTML
index(obj)
說明:返回對象索引
參數:obj (Object): 要查找的對象
例子:
未執行jQuery前:
<div id="test2"></div>
<a href="#" id="test" onClick="jq()">jQuery</a>
alert($("div").index(document.getElementById('test1')));
alert($("div").index(document.getElementById('test2')));
}
size() Length
說明:當前匹配對象的數量,兩者等價
例子:
未執行jQuery前:
<img src="test2.jpg"/>
<a href="#" id="test" onClick="jq()">jQuery</a>
alert($("img").length);
}
二:DOM操作
屬性
我們以<img id="a" scr="5.jpg"/>為例,在原始的javascript里面可以用var o=document.getElementById('a')取的id為a的節點對象,在用o.src來取得或修改該節點的scr屬性,在jQuery里$("#a")將得到jQuery對象[ <img id="a" scr="5.jpg"/> ],然后可以用jQuery提供的很多方法來進行操作,如$("#a").scr()將得到5.jpg,$("#a").scr("1.jpg")將該對象src屬性改為1,jpg。下面我們來講jQuery提供的眾多jQuery方法,方便大家快速對DOM對象進行操作
herf() herf(val)
說明:對jQuery對象屬性herf的操作。
例子:
未執行jQuery前
alert($("#test").href());
$("#test").href("2.html");
}
同理,jQuery還提供類似的其他方法,大家可以分別試驗一下:
herf() herf(val) html() html(val) id() id (val) name() name (val) rel() rel (val)
src() src (val) title() title (val) val() val(val)
操作
after(html) 在匹配元素后插入一段html
$("#test").after("<b>Hello</b>");
}
after(elem) after(elems) 將指定對象elem或對象組elems插入到在匹配元素后

$("a").after($("#test"));
}

append(html)在匹配元素內部,且末尾插入指定html
$("#test").append("<b>Hello</b>");
}
appendTo(expr) 與append(elem)相反

$("a"). appendTo ($("#test"));
}
clone() 復制一個jQuery對象
$("#test").clone().appendTo($("a"));
}
empty() 刪除匹配對象的所有子節點





$("#test").empty();
}
insertAfter(expr) insertBefore(expr)
按照官方的解釋和我的幾個簡單測試insertAfter(expr)相當于before(elem),insertBefore(expr)相當于after (elem)
prepend (html) prepend (elem) prepend (elems) 在匹配元素的內部且開始出插入
通過下面例子區分append(elem) appendTo(expr) prepend (elem)
<div>div</div>
P
<div>div</div>
</p>
div
<p id="a">p</p>
</div>
<div>div</div>
P
</p>
remove() 刪除匹配對象
注意區分empty(),empty()移出匹配對象的子節點,remove(),移出匹配對象
wrap(htm) 將匹配對象包含在給出的html代碼內
$("p").wrap("<div class='wrap'></div>");
}
wrap(elem) 將匹配對象包含在給出的對象內
<a href="#" onClick="jq()">jQuery</a>
$("p").wrap( document.getElementById('content') );
}
遍歷、組合
add(expr) 在原對象的基礎上在附加符合指定表達式的jquery對象
<a href="#" onClick="jq()">jQuery</a>
var f=$("p").add("span");
for(var i=0;i < $(f).size();i++){
alert($(f).eq(i).html());}
}
add(el) 在匹配對象的基礎上在附加指定的dom元素。
$("p").add(document.getElementById("a"));
add(els) 在匹配對象的基礎上在附加指定的一組對象,els是一個數組。

var f=$("p").add([document.getElementById("a"), document.getElementById("b")])
for(var i=0;i < $(f).size();i++){
alert($(f).eq(i).html());}
}
ancestors () 一依次以匹配結點的父節點的內容為對象,根節點除外(有點不好理解,看看下面例子就明白了)
<p>one</p>
<span>
<u>two</u>
</span>
</div>
var f= $("u").ancestors();
for(var i=0;i < $(f).size();i++){
alert($(f).eq(i).html());}
}
第一個對象是以<u>的父節點的父節點(div)的內容為對象,[<p>one</p><span><u>two</u></span> ]
一般一個文檔還有<body>和<html>,依次類推下去。
ancestors (expr) 在ancestors()的基礎上之取符合表達式的對象
如上各例子講var f改為var f= $("u").ancestors(“div”),則只返回一個對象:
[ <p>one</p><span><u>two</u></span> ]
children() 返回匹配對象的子介點
<div id="ch">
<span>two</span>
</div>
alert($("#ch").children().html());
}
children(expr) 返回匹配對象的子介點中符合表達式的節點
<span>two</span>
<span id="sp">three</span>
</div>
alert($("#ch").children(“#sp”).html());
}
$("#ch").children(“#sp”)過濾得到[<span id="sp">three</span> ]
parent () parent (expr)取匹配對象父節點的。參照children幫助理解
contains(str) 返回匹配對象中包含字符串str的對象

alert($("p").contains("test").html());
}
end() 結束操作,返回到匹配元素清單上操作前的狀態.
filter(expr) filter(exprs) 過濾現實匹配符合表達式的對象 exprs為數組,注意添加“[ ]”
alert($("p").filter(".selected").html())
}
find(expr) 在匹配的對象中繼續查找符合表達式的對象
alert($("p").find("#a").html())
}
is(expr) 判斷對象是否符合表達式,返回boolen值
alert($("#a").is("p"));
}
大家可以用$("#a").is("div"); ("#a").is("#a")多來測試一下
next() next(expr) 返回匹配對象剩余的兄弟節點
alert($("p").next().html());
alert($("p").next(".selected").html());
}
$("p").next(".selected)只返回 [<p class="selected">And Again</p> ]一個對象
prev () prev (expr) 參照next理解
not(el) not(expr) 從jQuery對象中移出匹配的對象,el為dom元素,expr為jQuery表達式。
<a href="#" onclick="js()">jQuery</a>
alert($("p").not(document.getElementById("a")).html());
alert($("p").not(“#a”).html());
}
siblings () siblings (expr) jquery匹配對象中其它兄弟級別的對象
<div>
<p id="a">two</p>
</div>
<a href="#" onclick="js()">jQuery</a>
alert($("div").siblings().eq(1).html());
}
alert($("div").siblings(“a”)返回一個對象[<a href="#" onclick="js()">jQuery</a> ]
其他
addClass(class) 為匹配對象添加一個class樣式
removeClass (class) 將第一個匹配對象的某個class樣式移出
attr (name) 獲取第一個匹配對象的屬性
alert($("img").attr("src"));
}
attr (prop) 為第一個匹配對象的設置屬性,prop為hash對象,用于為某對象批量添加眾多屬性
$("img").attr({ src: "test.jpg", alt: "Test Image" });
}
attr (key,value) 為第一個匹配對象的設置屬性,key為屬性名,value為屬性值
$("img").attr(“src”,”test.jpg”);
}
removeAttr (name) 將第一個匹配對象的某個屬性移出
$("img"). removeAttr("alt");
}
toggleClass (class) 將當前對象添加一個樣式,不是當前對象則移出此樣式,返回的是處理后的對象
$("p").toggleClass("selected")的結果是實返回對象 [ <p class="selected">Hello</p>, <p>Hello Again</p> ]
三:CSS操作
傳統javascript對css的操作相當繁瑣,比如<div id="a" style="background:blue">css</div>取它的background語法是 document.getElementById("a").style.background,而jQuery對css更方便的操作,$("#a").background(),$("#a").background(“red”)
$("#a")得到jQuery對象[ <div id="a" … /div> ]
$("#a").background()將取出該對象的background樣式。
$("#a").background(“red”)將該對象的background樣式設為redjQuery提供了以下方法,來操作css
background () background (val) color() color(val) css(name) css(prop)
css(key, value) float() float(val) height() height(val) width() width(val)
left() left(val) overflow() overflow(val) position() position(val) top() top(val)
這里需要講解一下css(name) css(prop) css(key, value),其他的看名字都知道什么作用了!
css(name) 獲取樣式名為name的樣式
$("#a").css("color") 將得到樣式中color值red,("#a").css("background ")將得到blue
css(prop) prop是一個hash對象,用于設置大量的css樣式
$("#b").css({ color: "red", background: "blue" });
最終效果是<p id="b" style="background:blue; color:red">test</p>,{ color: "red", background: "blue" },hash對象,color為key,"red"為value,
css(key, value) 用于設置一個單獨得css樣式
$("#b").css("color","red");最終效果是<p id="b" style="color:red">test</p>
四:JavaScript處理
$.browser() 判斷瀏覽器類型,返回boolen值
if($.browser.msie) {
alert("這是一個IE瀏覽器");}
else if($.browser.opera) {
alert("這是一個opera瀏覽器");}
})
$.each(obj, fn) obj為對象或數組,fn為在obj上依次執行的函數,注意區分$().each()
$.extend(obj, prop) 用第二個對象擴展第一個對象
var options = { validate: true, name: "bar" };
$.extend(settings, options);
可以用下面函數來測試
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
$.extend(settings, options);
$.each(settings, function(i){ alert( i + "=" + this ); });
})
$.grep(array,fn) 通過函數fn來過濾array,將array中的元素依次傳給fn,fn必須返回一個boolen,如fn返回true,將被過濾
var arr= $.grep( [0,1,2,3,4], function(i){ return i > 2; });
$.each(arr, function(i){ alert(i); });
})
$.merge(first, second) 兩個參數都是數組,排出第二個數組中與第一個相同的,再將兩個數組合并
var arr = $.merge( [0,1,2], [2,3,4] )
$.each(arr, function(i){ alert(i); });
})
$.trim(str) 移出字符串兩端的空格
$.trim(" hello, how are you? ")的結果是"hello, how are you?"
五:動態效果
在將這部分之前我們先看個例子,相信做網頁的朋友都遇到n級菜單的情景,但點擊某菜單按鈕時,如果它的子菜單是顯示的,則隱藏子菜單,如果子菜單隱藏,則顯示出來,傳統的javascript做法是先用getElementById取出子菜單所在容器的id,在判斷該容器的style.display是否等于none,如果等于則設為block,如果不等于這設為none,如果在將效果設置復雜一點,當點擊按鈕時,不是忽然隱藏和顯示子菜單,而是高度平滑的轉變,這時就要通過setTimeout來設置子菜單的height了,再復雜一點透明度也平滑的消失和顯現,這時顯現下來需要編寫很多代碼,如果js基礎不好的朋友可能只能從別人寫好的代碼拿過來修改了!jQuery實現上面效果只需要1句話就行,$("#a").toggle("slow"),

hide() 隱藏匹配對象
show() 顯示匹配對象
hide(speed) 以一定的速度隱藏匹配對象,其大小(長寬)和透明度都逐漸變化到0,speed有3級("slow", "normal", "fast"),也可以是自定義的速度。
show(speed) 以一定的速度顯示匹配對象,其大小(長寬)和透明度都由0逐漸變化到正常
hide(speed, callback) show(speed, callback) 當顯示和隱藏變化結束后執行函數callback
toggle() toggle(speed) 如果當前匹配對象隱藏,則顯示他們,如果當前是顯示的,就隱藏,toggle(speed),其大小(長寬)和透明度都隨之逐漸變化。


fadeIn(speeds) fadeOut(speeds) 根據速度調整透明度來顯示或隱藏匹配對象,注意有別于hide(speed)和show(speed),fadeIn和fadeOut都只調整透明度,不調整大小
fadeIn(speed, callback) fadeOut(speed, callback) callback為函數,先通過調整透明度來顯示或隱藏匹配對象,當調整結束后執行callback函數
<a href="#" onClick='$("img ").fadeIn("slow",function(){ alert("Animation Done."); })'> jQuery </a>
fadeTo(speed, opacity, callback) 將匹配對象以speed速度調整倒透明度opacity,然后執行函數callback。Opacity為最終顯示的透明度(0-1).
<a href="#" onClick='$("img ").fadeTo("slow",0.55,function(){ alert("Animation Done."); })'> jQuery </a>
slideDown(speeds) 將匹配對象的高度由0以指定速率平滑的變化到正常!
<a href="#" onClick='$("img ").slideDown("slow")'>jQuery</a>
slideDown(speeds,callback) 將匹配對象的高度由0變化到正常!變化結束后執行函數callback
slideUp("slow") slideUp(speed, callback) 匹配對象的高度由正常變化到0
slideToggle("slow") 如果匹配對象的高度正常則逐漸變化到0,若為0,則逐漸變化到正常
六:事件處理
hover(Function, Function) 當鼠標move over時觸發第一個function,當鼠標move out時觸發第二個function
樣式:<style>.red{color:#FF0000}</style>
Html代碼: <div id="a">sdf</div>
jQuery代碼及效果
$("#a").hover(function(){$(this).addClass("red");},
function(){ $(this).removeClass("red");
});
})
toggle(Function, Function) 當匹配元素第一次被點擊時觸發第一個函數,當第二次被點擊時觸發第二個函數
樣式:<style>.red{color:#FF0000}</style>
Html代碼: <div id="a">sdf</div>
jQuery代碼及效果
$("#a"). toggle (function(){$(this).addClass("red");},
function(){ $(this).removeClass("red");
});
})
bind(type, fn) 用戶將一個事件和觸發事件的方式綁定到匹配對象上。
trigger(type) 用戶觸發type形式的事件。$("p").trigger("click")
還有:unbind() unbind(type) unbind(type, fn)
Dynamic event(Function) 綁定和取消綁定提供函數的簡捷方式
例:
$(this).addClass("red");
})
$(this).addClass("red");
});
最終效果是當鼠標點擊id為a的層上時圖層增加一個red樣式,
jQuery提供的函數
用于browers事件
error(fn) load(fn) unload(fn) resize(fn) scroll(fn)
用于form事件
change(fn) select(fn) submit(fn)
用于keyboard事件
keydown(fn) keypress(fn) keyup(fn)
用于mouse事件
click(fn) dblclick(fn) mousedown(fn) mousemove(fn)
mouseout(fn) mouseover(fn) mouseup(fn)
用于UI事件
blur(fn) focus(fn)
以上事件的擴展再擴展為5類
舉例,click(fn) 擴展 click() unclick() oneclick(fn) unclick(fn)
click(fn):增加一個點擊時觸發某函數的事件
click():可以在其他事件中執行匹配對象的click事件。
unclick ():不執行匹配對象的click事件。
oneclick(fn):只增加可以執行一次的click事件。
unclick (fn):增加一個點擊時不觸發某函數的事件。
上面列舉的用于browers、form、keyboard、mouse、UI的事件都可以按以上方法擴展。
七:Ajax支持
通用方式:
$.ajax(prop) 通過一個ajax請求,回去遠程數據,prop是一個hash表,它可以傳遞的key/value有以下幾種。
(String)type:數據傳遞方式(get或post)。
((String)url:數據請求頁面的url
((String)data:傳遞數據的參數字符串,只適合post方式
((String)dataType:期待數據返回的數據格式(例如 "xml", "html", "script",或 "json")
((Boolean)ifModified: 當最后一次請求的相應有變化是才成功返回,默認值是false
((Number)timeout:設置時間延遲請求的時間。可以參考$.ajaxTimeout
((Boolean)global:是否為當前請求觸發ajax全局事件,默認為true
((Function)error:當請求失敗時觸發的函數。
((Function)success:當請求成功時觸發函數
((Function)complete:當請求完成后出發函數
jQuery代碼及說明
success:function(msg){
$(div"#a").html(msg);
}
});
type:"get",
dataType:"html",
data: "name=John&location=Boston",
success:function(msg){
$("#a").html(msg);
}
});
用get方式向ajax.aspx頁面傳參數,并將返回內容負給id為a的對象。
$.ajaxTimeout(time) 設置請求結束時間
$.ajaxTimeout( 5000 )
其它簡化方式:
$.get(url, params, callback) 用get方式向遠程頁面傳遞參數,請求完成后處理函數,除了url外,其它參數任意選擇!
{ name: "young", age: "25" },
function(data){ alert("Data Loaded: " + data); }
)
$.getJSON(url, params, callback) 用get方式向遠程json對象傳遞參數,請求完成后處理函數callback。
$.getScript(url, callback) 用get方式載入并運行一個遠程javascript文件。請求完成后處理函數callback。
$.post(url, params, callback) 用post方式向遠程頁面傳遞參數,請求完成后處理函數callback
load(url, params, callback) 載入一個遠程文件并載入頁面DOM中,并執行函數callback
loadIfModified(url, params, callback) 用get方式向遠程頁面傳遞參數,從最后一次請求后如果數據有變化才作出響應,將返回結果載入頁面DOM中,并執行函數callback
ajaxStart(callback) 當ajax請求發生錯誤是時執行函數callback
ajaxComplete(callback) 當ajax請求完成時執行函數callback
ajaxError(callback) 當ajax請求發生錯誤時執行函數callback
ajaxStop(callback) 當ajax請求停止時執行函數callback
ajaxSuccess(callback) 當ajax請求成功時執行函數callback
八:jQuery插件
隨著jQuery的廣泛使用,已經出現了大量jQuery插件,如thickbox,iFX,jQuery-googleMap等,簡單的引用這些源文件就可以方便的使用這些插件。這里我簡單的介紹一些網址供大家參考,這些網站頭提供了大量的demo,并且使用及其簡單,及時E文不好,也能快速掌握!
http://jquery.com/plugins 官方推薦
http://interface.eyecon.ro/demos 效果超級棒,使用更簡單,一定有你喜歡的!
http://www.dyve.net/jquery/
http://bassistance.de/jquery-plugins
還有其它很多插件,大家可以google以下,如果大家發現好的了,可以留言共享以下!
——————————————————————————————————————————————
至此jQuery已經介紹完畢,并合并整理提供給大家 下載 ,更多詳細的使用請大家參考官方網站,下面我再推薦一些jQuery的學習網站方便大家更好的掌握這項工具!
http://keel.sike.googlepages.com/jQuery_getting_started.html 中文入門介紹,Keel翻譯
http://jquery.com/api jquery提供全部基本方法的介紹及demo,方便大家查詢!