jQuery是如何工作的
我最近在做一個(gè)項(xiàng)目,需要用到ajax,我以前做ajax項(xiàng)目,已經(jīng)有很多年了,jQuery還不成熟,需要自己編寫大量的Javascript代碼。
最近發(fā)現(xiàn)jQuery很成熟了,我看了jQuery官方的document,這里先提供入門章節(jié)內(nèi)容。
專題:jQuery從入門到精通
對(duì)jQuery的簡(jiǎn)要介紹和一些需要了解的如何使用jQuery的概念
這段主要教授你如何開始使用jQuery. 如果你還沒有一個(gè)測(cè)試頁(yè)面,請(qǐng)先從按照下面的代碼創(chuàng)建一個(gè)HTML頁(yè)面。
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>Demo</title>
- </head>
- <body>
- <a href="http://jquery.com/">jQuery</a>
- <script src="jquery.js"></script>
- <script>
- </script>
- </body>
- </html>
編輯Script標(biāo)簽的src屬性,指向你的jQuery.js屬性。例如,如果你的jQuery.js和HTML文件在同一文件夾下:
- <script src="jquery.js"></script>
頁(yè)面加載完成時(shí)運(yùn)行代碼
很多Javascript程序員都要做的第一件事情,就是加這樣的一些代碼到他們的程序:
- window.onload = function(){ alert("welcome"); }
這段代碼將會(huì)在頁(yè)面加載成功時(shí)被正確執(zhí)行,但是,這段代碼的問題是Javascript代碼將會(huì)在所有的圖片信息被全部下載完成后執(zhí)行(這里包含了廣告欄)。這里使用首先Window.onload的原因是HTML在你最初運(yùn)行這段代碼的時(shí)候,HTML文檔并沒有完全加載。
To circumvent both problems, jQuery has a simple statement that checks the document and waits until it's ready to be manipulated, known as the ready event:
jQuery有一個(gè)很簡(jiǎn)單的聲明來(lái)檢查文檔,和判斷文檔是否已經(jīng)準(zhǔn)備完成,這里稱之為 ready event:
- $(document).ready(function(){
- // Your code here
- });
我們?cè)趓eady event中添加一個(gè)超鏈接點(diǎn)擊的處理方法。
- $(document).ready(function(){
- $("a").click(function(event){
- alert("Thanks for visiting!");
- });
- });
保存HTML文件,在瀏覽器中刷新此文件,點(diǎn)擊網(wǎng)頁(yè)中的超鏈接,在連接到指定頁(yè)面之前首先會(huì)彈出一個(gè)提示框。
在點(diǎn)擊和其他的很多事件中,你可以在這里使用event.preventDefault()來(lái)阻止其進(jìn)行默認(rèn)行為。
- $(document).ready(function(){
- $("a").click(function(event){
- alert("As you can see, the link no longer took you to jquery.com");
- event.preventDefault();
- });
- });
完整示例
這里提供一個(gè)完整的HTML文件的示例來(lái)演示之前我們講述的內(nèi)容。注意這里連接到了Google’s CDN 來(lái)加載jQuery的核心庫(kù)。你最好將它放在一個(gè)單獨(dú)文件中,并且在Head標(biāo)簽中完成對(duì)它的加載。
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <title>jQuery demo</title>
- </head>
- <body>
- <a href="http://jquery.com/">jQuery</a>
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
- <script>
- $(document).ready(function(){
- $("a").click(function(event){
- alert("As you can see, the link no longer took you to jquery.com");
- event.preventDefault();
- });
- });
- </script>
- </body>
- </html>
增加和刪除css樣式
重要: 接下來(lái)的jQuery示例需要放在ready event內(nèi),這樣在文檔準(zhǔn)備結(jié)束后立即執(zhí)行。
我們另一種常常做的事情,便是增加(或者刪除)一個(gè)css樣式。
首先我們?cè)?lt;head>標(biāo)簽內(nèi)增加一些樣式:
- <style>
- a.test { font-weight: bold; }
- </style>
然后在代碼內(nèi)使用addClass方法
- $("a").addClass("test");
所有超鏈接會(huì)被加粗。
要?jiǎng)h除此樣式,只需要使用 remove class方法。 (允許添加多個(gè)樣式到html)
- $("a").removeClass("test");
特效
jQuery提供了一組特效,使用這些特效可以讓你的網(wǎng)站脫穎而出,你只需要將上面的測(cè)試文件添加如下代碼就可以進(jìn)行測(cè)試:
- $("a").click(function(event){
- event.preventDefault();
- $(this).hide("slow");
- });
如果你點(diǎn)擊超鏈接,你所點(diǎn)擊的超級(jí)鏈接會(huì)被隱藏。
回調(diào)函數(shù)
回調(diào)函數(shù)是指父方法運(yùn)行通過(guò)后傳遞參數(shù)并且進(jìn)行調(diào)用的函數(shù)?;卣{(diào)函數(shù)的特殊之處在父函數(shù)可以在回調(diào)函數(shù)運(yùn)行之前運(yùn)行。另一個(gè)重要的點(diǎn)是要知道如何正確的傳遞回調(diào)。這也是我常常忘記的正確語(yǔ)法。
無(wú)參數(shù)回調(diào)
你可以使用下面的代碼來(lái)設(shè)定回調(diào)參數(shù)。
- $.get('myhtmlpage.html', myCallBack);
注意 第二個(gè)參數(shù)只包含回調(diào)函數(shù)的名字(不是字符串并且不包含括號(hào)對(duì)). Javascript的函數(shù)可以像參數(shù)一樣傳遞,并且在后面的代碼執(zhí)行。
包含參數(shù)的回調(diào)
你可能會(huì)這樣問,"如果包含參數(shù),你會(huì)怎么做?"。
錯(cuò)誤的方式
錯(cuò)誤的調(diào)用方式(不會(huì)被執(zhí)行)
- $.get('myhtmlpage.html', myCallBack(param1, param2));
這種方式并不會(huì)被調(diào)用,因?yàn)樗{(diào)用了
- myCallBack(param1, param2)
它的執(zhí)行結(jié)果會(huì)被作為第二個(gè)參數(shù)傳遞給$get()函數(shù)
正確的方式
上面的方式問題在于 myCallBack在作為函數(shù)傳遞之前先被進(jìn)行了評(píng)估。Javascrip和的jQuery 將函數(shù)擴(kuò)展為函數(shù)指針,例如IE的設(shè)定Timeout函數(shù)。
下面的方法,創(chuàng)建了一個(gè)匿名函數(shù)并且注冊(cè)了回調(diào)函數(shù)。注意這里使用了function(){}匿名函數(shù)只做了一件事情,使用兩個(gè)參數(shù)param1,param2調(diào)用myCallBack方法。
- $.get('myhtmlpage.html', function(){
- myCallBack(param1, param2);
- });
param1和param2是$get()方法獲取頁(yè)面完成后提供的參數(shù)。
原文:http://www.cnblogs.com/daitou0322/archive/2011/08/07/2130138.html
【編輯推薦】