早就聽說了Jquery的大名,一直沒有細心的學習一下,透過閱讀收集的一些資料,感覺Jquery真的很強大。決定開始自己的學習Jquery之旅。在這裡不是為大家講解Jquery(深知水平有限),只是將自己的學習成果分享給大家,共同學習和交流。
jQuery簡介
我所理解的jQuery就是一個強大的Javascript類庫,裡面封裝好了很多現有的方法和屬性。可以使開發人員用很少的程式碼更好更快的開發出自己想實現的效果。過多的jQquery在這裡就不多介紹了,想必很多人都已經看過了更詳細的文件,我就不多囉嗦了。
Selectors (選擇器)
jQuery中使用 $ ,可以透過元素的id, css class或 tag name很容易的獲取到相應的元素。
(1)簡單的獲取元素
Example:
$("#pid") //透過 ID
$(".p") //透過css class name
(2)當然,他的功能不僅限於如此,還可以鑽取層次結構
Example:
(3)Jquery為了讓開發人員更準確方便的選擇到相應的元素,還給我們提供了強大的篩選器的功能:
Example:
$(“p:last”) //last
$(“table > tbody > tr:even”) //even rows
$(“table > tbody > tr:odd”) //odd rows
$(“p:eq(1)”) //索引為1
$(“p:gt(2)”) //2以上的元素
$("p:lt(10)”) // 0-9
$(“p:empty”) //沒有子孩子的p
$(“p:parent”) //為父的p
(4)訪問文字,並可以控制其中的值:
Example:
關於selectors的作用還有很多,大家可以參看:http://docs.jquery.com/Selectors
訪問內容
Examlple:
$("#span").html();
$(:input).val();
$("#name").text();
上面的幾個方法用來獲取指定元素的基本結果集,在我們使用的時候應當注意:val()方法查詢有一個屬性和他相關聯的元素。html()查詢的是指定元素中HTML中的內容。text()方法獲取的是指定元素的text。
操作HTML標記,還有其他的一些方法,比較常用的還有css()和attr()。
css()方法有兩個引數,一個是css的元素名,另一個是其所對應的值,透過css()可以很容易的修改一個或多個元素的css樣式。
attr()方法可以讀取或修改元素的屬性。並且他可以同時設定多個元素的屬性.
Examlple:
$("p").css({ "background-color" : "navy", "color", "white" });
$("button").attr("disabled", "disabled");
事件
jQuery能夠監聽元素的事件。最引人注目並且頻繁使用的事件就是ready 事件。這個事件在瀏覽器載入完之後觸發。
處理一個按鈕事件:
jQuery中常用的函式方法總結
jQuery中為我們提供了很多有用的方法和屬性,自己總結的一些常用的函式,方法。個人認為在開發中會比較常用的,僅供大家學習和參考。
事件處理
ready(fn)
程式碼:
$(document).ready(function(){
// Your code here...
});
作用:它可以極大地提高web應用程式的響應速度。透過使用這個方法,可以在DOM載入就緒能夠讀取並操縱時立即呼叫你所繫結的函式,而99.99%的JavaScript函式都需要在那一刻執行。
bind(type,[data],fn)
程式碼:
$("p").bind("click", function(){
alert( $(this).text() );
});
作用:為每一個匹配元素的特定事件(像click)繫結一個事件處理器函式。起到事件監聽的作用。
toggle(fn,fn)
程式碼:
$("td").toggle(
function () {
$(this).addClass("selected");
},
function () {
$(this).removeClass("selected");
}
);
作用:每次點選時切換要呼叫的函式。如果點選了一個匹配的元素,則觸發指定的第一個函式,當再次點選同一元素時,則觸發指定的第二個函式。挺有趣的一個函式,在動態實現某些功能的時候可能會用到。
(像click(),focus(),keydown()這樣的事件這裡就不提了,那些都是開發中比較常用到的。)
外觀效果
addClass(class)和removeClass(class)
程式碼:
$(".stripe tr").mouseover(function(){
$(this).addClass("over");}).mouseout(function(){
$(this).removeClass("over");})
});
也可以寫成:
$(".stripe tr").mouseover(function() { $(this).addClass("over") });
$(".stripe tr").mouseout(function() { $(this).removeClass("over") });
作用:為指定的元素新增或移除樣式,從而實現動態的樣式效果,上面的例項中實現滑鼠移動雙色表格的程式碼。
css(name,value)
程式碼:
$("p").css("color","red");
作用:很簡單,就是在匹配的元素中,設定一個樣式屬性的值。這個個人感覺和上面的addClass(class)有點類似。
slide(),hide(),fadeIn(), fadeout(), slideUp() ,slideDown()
程式碼:
$("#btnShow").bind("click",function(event){ $("#divMsg").show() });
$("#btnHide").bind("click",function(evnet){ $("#divMsg").hide() });
作用:jQuery中提供的比較常用的幾個動態效果的函式。還可以新增引數:show(speed,[callback])以優雅的動畫顯示所有匹配的元素,並在顯示完成後可選地觸發一個回撥函式。
animate(params[,duration[,easing[,callback]]])
作用:製作動畫效果用到的函式,功能非常的強大,可以連續使用此函式。
查詢篩選
map(callback)
HTML 程式碼:
<p><b>Values: </b></p>
<form>
<input type="text" name="name" value="John"/>
<input type="text" name="password" value="password"/>
<input type="text" name="url" value="http://ejohn.org/%22/>
</form>
jQuery 程式碼:
$("p").append( $("input").map(function(){
return $(this).val();
}).get().join(", ") );
結果:
[ <p>John, password, http://ejohn.org/%3C/p> ]
作用:將一組元素轉換成其他陣列(不論是否是元素陣列)你可以用這個函式來建立一個列表,不論是值、屬性還是CSS樣式,或者其他特別形式。這都可以用'$.map()'來方便的建立。
find(expr)
HTML 程式碼:
<p><span>Hello</span>, how are you?</p>
jQuery 程式碼:
$("p").find("span")
結果:
[ <span>Hello</span> ]
作用:搜尋所有與指定表示式匹配的元素。這個函式是找出正在處理的元素的後代元素的好方法。
文件處理
attr(key,value)
HTML 程式碼:
<img/><img/>
jQuery 程式碼:
$("img").attr("src","test.jpg");
作用:取得或設定匹配元素的屬性值。透過這個方法可以方便地從第一個匹配元素中獲取一個屬性的值。如果元素沒有相應屬性,則返回 undefined 。在控制HTML標記上是必備的工具。
html()/html(val)
HTML 程式碼:
<div><p>Hello</p></div>
jQuery 程式碼:
$("div").html();
結果:
<p>Hello</p>
作用:取得或設定匹配元素的html內容,同型別的方法還有text()和val()。前者是取得所有匹配元素的內容。,後者是獲得匹配元素的當前值。三者有相似的地方常用在內容的操作上。
wrap(html)
HTML 程式碼:
<p>Test Paragraph.</p>
jQuery 程式碼:
$("p").wrap("<div class='wrap'></div>");
結果:
<div class="wrap"><p>Test Paragraph.</p></div>
作用:把所有匹配的元素用其他元素的結構化標記包裹起來。
這種包裝對於在文件中插入額外的結構化標記最有用,而且它不會破壞原始文件的語義品質。 可以靈活的修改我們的DOM。
empty()
HTML 程式碼:
<p>Hello, <span>Person</span> <a href="#">and person</a></p>
jQuery 程式碼:
$("p").empty();
結果:
<p></p>
作用:刪除匹配的元素集合中所有的子節點。
Ajax處理
load(url,[data],[callback])
url (String) : 待裝入 HTML 網頁網址。
data (Map) : (可選) 傳送至伺服器的 key/value 資料。
callback (Callback) : (可選) 載入成功時回撥函式。
程式碼:
$("#feeds").load("feeds.aspx", {limit: 25}, function(){
alert("The last 25 entries in the feed have been loaded");
});
作用:載入遠端 HTML 檔案程式碼並插入至 DOM 中。這也是Jquery操作Ajax最常用最有效的方法。
serialize()
HTML 程式碼:
<p id="results"><b>Results: </b> </p>
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select><br/>
<input type="checkbox" name="check" value="check1"/> check1
<input type="checkbox" name="check" value="check2"
checked="checked"/> check2
<input type="radio" name="radio" value="radio1"
checked="checked"/> radio1
<input type="radio" name="radio" value="radio2"/> radio2
</form>
jQuery 程式碼:
$("#results").append( "<tt>" + $("form").serialize() + "</tt>" );
作用:序列化表格內容為字串。用於 Ajax 請求。
工具
jQuery.each(obj,callback)
程式碼:
$.each( [0,1,2], function(i, n){
alert( "Item #" + i + ": " + n );
});//遍歷陣列
$.each( { name: "John", lang: "JS" }, function(i, n){
alert( "Name: " + i + ", Value: " + n );//遍歷物件
});
作用:通用例遍方法,可用於例遍物件和陣列。
jQuery.makeArray(obj)
HTML 程式碼:
<div>First</div><div>Second</div><div>Third</div><div>Fourth</div>
jQuery 程式碼:
var arr = jQuery.makeArray(document.getElementsByTagName("div"));
結果:
Fourth
Third
Second
First
作用:將類陣列物件轉換為陣列物件。使我們可以在陣列和物件之間靈活的轉換。
jQuery.trim(str)
作用:這個大家應該很熟悉,就是去掉字串起始和結尾的空格。
前兩篇文章中,介紹了jQuery中強大的Selectors (選擇器)以及開發中比較常用的方法的使用。今天和大家一起體驗一下jQuery另一個吸引人的地方--強大炫酷實用的jQuery外掛。
做網站的都知道,網站的美工很重要,如果一個BS的軟體美工做的不好,技術含量很高,演算法再高深,也不會很受到使用者的青睞。(其實CS的也是如此)
然而jQuery強大的外掛,可以很容易的給我們的網站帶來炫酷的效果,以及更人性化得使用者體驗。下面和大家分享一些開發中可能常用的jQuery外掛。
Menu
效果:
實現起來非常簡單:
Html程式碼:
css和jQuery程式碼:
其中的jquery-latest.pack.js,jquery.lavalamp.js,jquery.easing.js
當然,這是比較簡單的Menu,但是比較實用,還有其他很酷的Menu,比如下拉式的Menu,大家可以到我最後給的網站上查詢,這裡就不多介紹了。
Tabs
Tabs也是我們經常使用外掛,它可以使我們的網站更佳的整潔和規範,是個很人性化的設計。
效果: 點選這裡檢視效果(這裡可能有點問題,我不知道為什麼css的@media應用不上,本地測試是沒有問題的,寫在部落格園的html模板中就有了問題,看了半天無語了)
實現起來也不是很難,關鍵的地方就是對css的操作上
Html程式碼:
css和jQuery程式碼:
Accordion
手風琴效果,大家應該很熟悉。
效果: 點選這裡檢視效果
Html程式碼:
css和jQuery程式碼:
其中的jquery.accordion.js當然,大家可以製作更炫酷漂亮的效果。
Round
有的時候我們希望頁面中的Div實現圓角的效果,Jquery可以很好的滿足我們。
效果:點選這裡檢視效果
Html程式碼:
<DIV class=demo id="corner1">
<H1>Round</H1>
<P>Hello World!!</P></DIV>
<DIV class=demo id="corner2">
<H1>Round</H1>
<P>Hello World!!</P></DIV>
</DIV>
css和jQuery程式碼:
其中的jquery.corner.js。這樣就能夠實現Div的圓角效果。
Dialog
簡單的實現在網頁中彈出對話方塊。
效果:點選這裡檢視效果
Html程式碼:
css和jQuery程式碼:
其中的jquery.simplemodal.js,在Dialog中我們能做很多事情,類似的場景很多:百度的登入....
ok,就先寫到這。
小結:就先簡單的介紹這些。jQuery的外掛深受大家的喜愛和好評,的確給我們的開發帶來了不少便捷和絢麗的效果,這裡就不多介紹了,大家可以到下面的地址中去繼續體驗。
更多Jquery外掛:
http://www.cnblogs.com/Terrylee/archive/2007/12/09/the-ultimate-jquery-plugin-list.html
http://parandroid.com/more-than-50-powerful-plug-in-application-examples-jquery/
http://www.cnblogs.com/andylaufzf/archive/2009/03/26/1422255.html