jQuery是一款同prototype同樣優秀js開發庫類,特別是對css和XPath的支持,使咱們寫js變得更加方便!若是你不是個js高手又想寫出優 秀的js效果,jQuery能夠幫你達到目的!
下載地址:Starterkit (http://jquery.bassistance.de/jquery-starterkit.zip)
jQuery Downloads (http://jquery.com/src/)javascript
下載完成後先加載到文檔中,而後咱們來看個簡單的例子!css
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$("a").click(function() {
alert("Hello world!");
});
});
<script>html
上邊的效果是點擊文檔中全部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>)的元素.java
我將從如下幾個內容來說解jQuery的使用:
1:核心部分
2:DOM操做
3:css操做
4:javascript處理
5:動態效果
6:event事件
7:ajax支持
8:插件程序jquery
一:核心部分
$(expr)
說明:該函數能夠經過css選擇器,Xpath或html代碼來匹配目標元素,全部的jQuery操做都以此爲基礎
參數:expr:字符串,一個查詢表達式或一段html字符串
例子:
未執行jQuery前:ajax
<p>one</p>
<div>
<p>two</p>
</div>
<p>three</p>
<a href="#" id="test" onClick="jq()" >jQuery</a>json
jQuery代碼及功能: windows
function jq(){
alert($("div > p").html());
}數組
運行:當點擊id爲test的元素時,彈出對話框文字爲two,即div標籤下p元素的內容 瀏覽器
function jq(){
$("<div><p>Hello</p></div>").appendTo("body");
}
運行:當點擊id爲test的元素時,向body中添加「<div><p>Hello</p></div>」
$(elem)
說明:限制jQuery做用於一個特定的dom元素,這個函數也接受xml文檔和windows對象
參數: elem:經過jQuery對象壓縮的DOM元素
例子:
未執行jQuery前:
<p>one</p>
<div>
<p>two</p>
</div><p>three</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
jQuery代碼及功能:
function jq(){
alert($(document).find("div > p").html());
}
運行:當點擊id爲test的元素時,彈出對話框文字爲two,即div標籤下p元素的內容
function jq(){
$(document.body).background("black");
}
運行:當點擊id爲test的元素時,背景色變成黑色
$(elems)
說明:限制jQuery做用於一組特定的DOM元素
參數: elem:一組經過jQuery對象壓縮的DOM元素
例子:
未執行jQuery前:
<form id="form1">
<input type="text" name="textfield">
<input type="submit" name="Submit" value="提交">
</form>
<a href="#" id="test" onClick="jq()">jQuery</a>
function jq(){
$(form1.elements ).hide();
}
$( function(){
$(document.body).background("black");
})
<p>one</p>
<div>
<p>two</p>
</div>
<p>three</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
function jq(){
var f = $("div");
alert($(f).find("p").html())
}
<img src="1.jpg"/>
<img src="1.jpg"/>
<a href="#" id="test" onClick="jq()">jQuery</a>
function jq(){
$("img").each(function(){
this.src = "2.jpg"; });
}
<p>This is just a test.</p>
<p>So is this</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
function jq(){
alert($("p").eq(1).html())
}
<p>This is just a test.</p>
<p>So is this</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
function jq(){
alert($("p").get(1).innerHTML);
}
<div id="test1"></div>
<div id="test2"></div>
<a href="#" id="test" onClick="jq()">jQuery</a>
function jq(){
alert($("div").index(document.getElementById('test1')));
alert($("div").index(document.getElementById('test2')));
}
<img src="test1.jpg"/>
<img src="test2.jpg"/>
<a href="#" id="test" onClick="jq()">jQuery</a>
function jq(){
alert($("img").length);
}
<a href="1.htm" id="test" onClick="jq()">jQuery</a>
jQuery代碼及功能:function jq(){
alert($("#test").href());
$("#test").href("2.html");
}
<a href="#" id="test" onClick="jq()">jQuery</a>
jQuery代碼及功能:function jq(){
$("#test").after("<b>Hello</b>");
}
<a href="#" id="test" onClick="jq()">jQuery</a><b>Hello</b>
<p id="test">after</p><a href="#" onClick="jq()">jQuery</a>
jQuery代碼及功能function jq(){
$("a").after($("#test"));
}
<a href="#" onClick="jq()">jQuery</a><p id="test">after</p>
<a href="#" id="test" onClick="jq()">jQuery</a>
jQuery代碼及功能:function jq(){
$("#test").append("<b>Hello</b>");
}
<a href="#" onClick="jq()">jQuery<b>Hello</b></a>
同理還有append(elem) append(elems) before(html) before(elem) before(elems)請執行參照append和after的方來測試、理解!<p id="test">after</p><a href="#" onClick="jq()">jQuery</a>
jQuery代碼及功能function jq(){
$("a"). appendTo ($("#test"));
}
<p id="test">after<a href="#" onClick="jq()">jQuery</a> </p>
<p id="test">after</p><a href="#" onClick="jq()">jQuery</a>
jQuery代碼及功能:function jq(){
$("#test").clone().appendTo($("a"));
}
<p id="test">after</p><a href="#" onClick="jq()">jQuery</a><p id="test">after</p>
<div id="test">
<span>span</span>
<p>after</p>
</div>
<a href="#" onClick="jq()">jQuery</a>
function jq(){
$("#test").empty();
}
<div id="test"></div><a href="#" onClick="jq()">jQuery</a>
<p id="a">p</p>
<div>div</div>
<p id="a">
P
<div>div</div>
</p>
<div>
div
<p id="a">p</p>
</div>
<p id="a">
<div>div</div>
P
</p>
<p>Test Paragraph.</p> <a href="#" onClick="jq()">jQuery</a>
jQuery代碼及功能:function jq(){
$("p").wrap("<div class='wrap'></div>");
}
<div class='wrap'><p>Test Paragraph.</p></div>
<p>Test Paragraph.</p><div id="content"></div>
<a href="#" onClick="jq()">jQuery</a>
function jq(){
$("p").wrap( document.getElementById('content') );
}
<div id="content"><p>Test Paragraph.</p></div>
<p>Hello</p><p><span>Hello Again</span></p>
<a href="#" onClick="jq()">jQuery</a>
function jq(){
var f=$("p").add("span");
for(var i=0;i < $(f).size();i++){
alert($(f).eq(i).html());}
}
<p>Hello</p><p><span>Hello Again</span></p>
jQuery代碼及功能:function jq(){
var f=$("p").add([document.getElementById("a"), document.getElementById("b")])
for(var i=0;i < $(f).size();i++){
alert($(f).eq(i).html());}
}
<div>
<p>one</p>
<span>
<u>two</u>
</span>
</div>
function jq(){
var f= $("u").ancestors();
for(var i=0;i < $(f).size();i++){
alert($(f).eq(i).html());}
}
<p>one</p>
<div id="ch">
<span>two</span>
</div>
function jq(){
alert($("#ch").children().html());
}
<div id="ch">
<span>two</span>
<span id="sp">three</span>
</div>
function jq(){
alert($("#ch").children(「#sp」).html());
}
<p>This is just a test.</p><p>So is this</p>
jQuery代碼及功能:function jq(){
alert($("p").contains("test").html());
}
<p>Hello</p><p>Hello Again</p><p class="selected">And Again</p>
jQuery代碼及功能:function jq(){
alert($("p").filter(".selected").html())
}
<p>Hello</p><p id="a">Hello Again</p><p class="selected">And Again</p>
Query代碼及功能:function jq(){
alert($("p").find("#a").html())
}
<p>Hello</p><p id="a">Hello Again</p><p class="selected">And Again</p>
Query代碼及功能:function jq(){
alert($("#a").is("p"));
}
<p>Hello</p><p id="a">Hello Again</p><p class="selected">And Again</p>
jQuery代碼及功能function jq(){
alert($("p").next().html());
alert($("p").next(".selected").html());
}
<p>one</p><p id="a">two</p>
<a href="#" onclick="js()">jQuery</a>
function js(){
alert($("p").not(document.getElementById("a")).html());
alert($("p").not(「#a」).html());
}
<p>one</p>
<div>
<p id="a">two</p>
</div>
<a href="#" onclick="js()">jQuery</a>
function js(){
alert($("div").siblings().eq(1).html());
}
<img src="test.jpg"/><a href="#" onclick="js()">jQuery</a>
jQuery代碼及功能:function js(){
alert($("img").attr("src"));
}
<img/><a href="#" onclick="js()">jQuery</a>
jQuery代碼及功能:function js(){
$("img").attr({ src: "test.jpg", alt: "Test Image" });
}
<img/><a href="#" onclick="js()">jQuery</a>
jQuery代碼及功能function js(){
$("img").attr(「src」,」test.jpg」);
}
<img alt="test"/><a href="#" onclick="js()">jQuery</a>
jQuery代碼及功能:function js(){
$("img"). removeAttr("alt");
}
<p>Hello</p><p class="selected">Hello Again</p><a href="#" onclick="js()">jQuery</a>
$("p")的結果是返回對象 [<p>Hello</p>,<p class="selected">Hello Again</p> ]<div id="a" style="background:blue; color:red">css</div><P id="b">test</P>
$(function(){
if($.browser.msie) {
alert("這是一個IE瀏覽器");}
else if($.browser.opera) {
alert("這是一個opera瀏覽器");}
})
$.each( [0,1,2], function(i){ alert( "Item #" + i + ": " + this ); });
分別將0,1,2爲參數,傳入到function(i)中$.each({ name: "John", lang: "JS" }, function(i){ alert( "Name: " + i + ", Value: " + this );
{ name: "John", lang: "JS" }爲一個hash對象,依次將hash中每組對象傳入到函數中var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
$.extend(settings, options);
$(function(){
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
$.extend(settings, options);
$.each(settings, function(i){ alert( i + "=" + this ); });
})
$(function(){
var arr= $.grep( [0,1,2,3,4], function(i){ return i > 2; });
$.each(arr, function(i){ alert(i); });
})
$(function(){
var arr = $.merge( [0,1,2], [2,3,4] )
$.each(arr, function(i){ alert(i); });
})
<p id="a">Hello Again</p><a href="#" onClick=’ ("#a").hide()’>jQuery</a>
當點擊鏈接時,id爲a的對象的display變爲none。<img src="1.jpg" style="width:150px"/>
<a href="#" onClick='$("img").toggle("slow")'>jQuery</a>
<img src="1.jpg" style="display:none"/><a href="#" onClick='$("img ").fadeIn("slow")'> jQuery </a>
點擊鏈接後能夠看到圖片逐漸顯示。<img src="1.jpg"/>
<a href="#" onClick='$("img ").fadeIn("slow",function(){ alert("Animation Done."); })'> jQuery </a>
<img src="1.jpg"/><br>
<a href="#" onClick='$("img ").fadeTo("slow",0.55,function(){ alert("Animation Done."); })'> jQuery </a>
<img src="1.jpg" style="display:none"/>
<a href="#" onClick='$("img ").slideDown("slow")'>jQuery</a>
$(function(){
$("#a").hover(function(){$(this).addClass("red");},
function(){ $(this).removeClass("red");
});
})
$(function(){
$("#a"). toggle (function(){$(this).addClass("red");},
function(){ $(this).removeClass("red");
});
})
$("#a").bind("click",function() {
$(this).addClass("red");
})
$("#a").click(function() {
$(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代碼及說明
$.ajax({url: "ajax.htm",
success:function(msg){
$(div"#a").html(msg);
}
});
$.ajax({ url: "ajax.aspx",
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外,其它參數任意選擇!
$.get( "ajax.htm" , function(data){ $("#a").html(data) })
$.get( "ajax.asp",
{ name: "young", age: "25" },
function(data){ alert("Data Loaded: " + data); }
)
$("#a").load("ajax.htm", function() { alert("load is done"); } );
仰天一笑 徐羽 向ajax.htm頁面發出請求,將返回結果裝入id爲a的內容中,而後再執行函數callback。