版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1/1jQuery的起點教程(PDF版)知博網(wǎng)jQuery中文入門指南,翻譯加實例,jQuery的起點教程中文版譯者:
KeeljQuery教程專題此文以實例為基礎(chǔ)一步步說明了jQuery的工作方式。
現(xiàn)以中文翻譯(添加我的補充說明)如下。
如有相關(guān)意見或建議請麻煩到我的BLOG寫個回復或者EMAIL告知。
英文原版:
/api//以下部分為原文翻譯:jQuery入門指南教程這個指南是一個對jQuery庫的說明,要求讀者了解HTML(DOM)和CSS的一些常識。
它包括了一個簡單的HelloWorld的例子,選擇器和事件基礎(chǔ),AJAX、FX的用法,以及如何制作jQuery的插件。
這個指南包括了很多代碼,你可以copy它們,并試著修改它們,看看產(chǎn)生的效果。
內(nèi)容提要1.安裝2.HellojQuery3.Findme:使用選擇器和事件4.Rateme:使用AJAX知博網(wǎng)5.Animateme(讓我生動起來):使用FX6.Sortme(將我有序化):使用tablesorter插件(表格排序)7.Plugme:制作您自己的插件8.Nextsteps(下一步)安裝jQuery教程專題一開始,我們需要一個jQuery的庫,最新的下載可以到這里找到。
這個指南提供一個基本包含實例的包供下載.下載:
jQueryStarterkit(譯者Keel注:一定要下載這個包,光看文章不實踐肯定是不行的。
)下載后解壓縮,然后用你最喜歡的文本編輯器打開starterkit.html和custom.js這兩個文件。
(譯者Keel注:這兩個就是例子文件,所有的例子都用這兩個例子作出,custom.js寫jQuery代碼,starterkit.html觀察效果.建議用editPlus打開)現(xiàn)在,我們就已經(jīng)做好了一切準備來進行這個著名的Helloworld例子.本章的相關(guān)鏈接:StarterkitjQueryDownloadsHellojQue在做所有事情之前,我們要讓jQuery讀取和處理文檔的DOM,必須盡可能快地在DOM載入后開始執(zhí)行事件,所以,我們用一個ready事件作為處理HTML文檔的開始.看看我們打開的custom.js這個文件,里面已經(jīng)準備好了:知博網(wǎng)$(document).ready(function(){//dostuffwhenDOMisready});jQuery教程專題放一個簡單的alert事件在需要等DOM完成載入,所以我們把任務稍稍變復雜一點:在點擊任何一個鏈接時顯示一個alert.$(document).ready(function(){$(a).click(function(){alert(Helloworld!);});});這樣在你點擊頁面的一個鏈接時都會觸發(fā)這個Helloworld的提示。
(譯者Keel注:請照此代碼修改custom.js并保存,然后用瀏覽器打開starterkit.html觀察效果。
)讓我們看一下這些修改是什么含義。
$(a)是一個jQuery選擇器(selector),在這里,它選擇所有的a標簽(譯者Keel注:
即a/a),$號是jQuery類(jQueryclass)的一個別稱,因此$()構(gòu)造了一個新的jQuery對象(jQueryobject)。
函數(shù)click()是這個jQuery對象的一個方法,它綁定了一個單擊事件到所有選中的標簽(這里是所有的a標簽),并在事件觸發(fā)時執(zhí)行了它所提供的alert方法.這里有一個擬行相似功能的代碼:ahref=#onclick=alert(‘Helloworld’)Link/a不同之處很明顯,用jQuery不需要在每個a標簽上寫onclick事件,所以我們擁有了一個整潔的結(jié)構(gòu)文檔(HTML)和一個行為文檔(JS),達到了將結(jié)構(gòu)與行為分開的目的,就像我們使用CSS追求的一樣.下面我們會更多地了解到選擇器與事件.本章的相關(guān)鏈接:知博網(wǎng)jQueryBasejQueryExpressionsjQueryBasicEventsFindme:使用選擇器和事件jQuery教程專題jQuery提供兩種方式來選擇html的elements,第一種是用CSS和Xpath選擇器聯(lián)合起來形成一個字符串來傳送到jQuery的構(gòu)造器(如:
$(divula));第二種是用jQuery對象的幾個methods(方法)。
這兩種方式還可以聯(lián)合起來混合使用。
為了測試一下這些選擇器,我們來試著在我們starterkit.html中選擇并修改第一個orderedlist.一開始,我們需要選擇這個list本身,這個list有一個ID叫orderedlist,通常的javascript寫法是document.getElementById(orderedlist).在jQuery中,我們這樣做:
$(document).ready(function(){$(#orderedlist).addClass(red);});這里將starterkit中的一個CSS樣式red附加到了orderedlist上(譯者Keel注:
參考測試包中的css目錄下的core.css,其中定義了red樣式)。
因此,在你刷新了starterkit.html后,你將會看到第一個有序列表(orderedlist)背景色變成了紅色,而第二個有序列表沒有變化.現(xiàn)在,讓我們添加一些新的樣式到list的子節(jié)點.$(document).ready(function(){$(#orderedlistli).addClass(blue);});這樣,所有orderedlist中的li都附加了樣式blue。
知博網(wǎng)現(xiàn)在我們再做個復雜一點的,當把鼠標放在li對象上面和移開時進行樣式切換,但只在list的最后一個jQuery教程專題element上生效。
$(document).ready(function(){$(#orderedlistl個onXXX事件都有效,如onclick,onchange,onsubmit等,都有jQuery等價表示方法(譯者Keel注:
jQuery不喜歡onXXX,所以都改成了XXX,去掉了on)。
其他的一些事件,如ready和hover,也提供了相應的方法。
你可以在VisualjQuery找到全部的事件列表,在Events欄目下.用這些選擇器和事件你已經(jīng)可以做很多的事情了,但這里有一個更強的好東東!$(document).ready(function(){$(#orderedlist).find(li).each(function(i){$(this).html($(this).html()+BAM!+i);});});find()讓你在已經(jīng)選擇的element中作條件查找,因此$(#orderedlist).find(li)就像$(#orderedlistli).each()一樣迭代了所有的li,并可以在此基礎(chǔ)上作更多的處理。
大部分的方法,如addClass(),都可以用它們自己的each()。
在這個例子中,html()用來獲取每個li的html文本,追加一些文字,并將之設(shè)置為知博網(wǎng)li的html文本。
(譯者Keel注:
從這個例子可以看到.html()方法是獲取對象的html代碼,而.html(‘xxx’)jQuery教程專題是設(shè)置’xxx’為對象的html代碼)另一個經(jīng)常碰到的任務是在沒有被jQuery覆蓋的DOM元素上call一些方法,想像一個在你用AJAX方式成功提交后的reset:
$(document).ready(function(){//usethistoresetasingleform$(#reset).click(function(){$(#form)[0].reset();});});(譯者Keel注:
這里作者將form的id也寫成了form,源文件有formid=form,這是非常不好的寫法,你可以將這個ID改成form1或者testForm,然后用$(#form1)或者$(#testForm)來表示它,再進行測試。
)這個代碼選擇了所有ID為form的元素,并在其第一個上call了一個reset()。
如果你有一個以上的form,你可以這樣做:
$(document).ready(function(){//usethistoresetseveralformsatonce$(#reset).click(function(){$(form).each(function(){this.reset();});});});知博網(wǎng)(譯者Keel注:
請注意一定要親自將這些代碼寫在custom.js中并在starterkit.html上測試效果才能有所jQuery教程專題體會!必要時要觀察starterkit.html的html代碼)這樣你在點擊Reset鏈接后,就選擇了文檔中所有的form元素,并對它們都執(zhí)行了一次reset()。
還有一個你可能要面對的問題是不希望某些特定的元素被選擇。
jQuery提供了filter()和not()方法來解決這個問題。
filter()以過濾表達式來減少不符合的被選擇項,not()則用來取消所有符合過濾表達式的被選擇項.考慮一個無序的list,你想要選擇所有的沒有ul子元素的li元素。
$(document).ready(function(){$(li).not([ul]).css(border,1pxsolidblack);});這個代碼選擇了所有的li元素,然后去除了沒有ul子元素的li元素。
刷新瀏覽器后,所有的li元素都有了一個邊框,只有ul子元素的那個li元素例外。
(譯者Keel注:
請注意體會方便之極的css()方法,并再次提醒請務必實際測試觀察效果,比方說換個CSS樣式呢?再加一個CSS樣式呢?像這樣:
$(li).not([ul]).css(border,1pxsolidblack).css(color,red);)上面代碼中的[expression]語法是從XPath而來,可以在子元素和屬性(elementsandattributes)上用作過濾器,比如你可能想選擇所有的帶有name屬性的鏈接:$(document).ready(function(){$(a[@name]).background(#eee);});這個代碼給所有帶有name屬性的鏈接加了一個背景色。
(譯者Keel注:
這個顏色太不明顯了,建議寫成$(a[@name]).background(red);)更常見的情況是以name來選擇鏈接,你可能需要選擇一個有特點href屬性的鏈接,這在不同的瀏覽器下對href的理解可能會不一致,所以我們的部分匹配(*=)的方式來代替完全匹配(=):
知博網(wǎng)$(document).ready(function(){$(a[@href*=/content/gallery]).click(function(){//dosomethingwithalllinksthatpointsomewhereto/content/gallery});});jQuery教程專題到現(xiàn)在為止,選擇器都用來選擇子元素或者是過濾元素。
另外還有一種情況是選擇上一個或者下一個元素,比如一個FAQ的頁面,答案首先會隱藏,當問題點擊時,答案顯示出來,jQuery代碼如下:
$(document).ready(function(){$(‘#faq’).find(‘dd’).hide().end().find(‘dt’).click(function(){varanswer=$(this).next();if(answer.is(‘:visible’)){answer.slideUp();}else{answer.slideDown();}});});這里我們用了一些鏈式表達法來減少代碼量,而且看上去更直觀更容易理解。
像’#faq’只選擇了一次,利用end()方法,第一次find()方法會結(jié)束(undone),所以我們可以接著在后面繼續(xù)find(‘dt’),而不需要再寫$(‘#faq’).find(‘dt’)。
在點擊事件中的,我們用$(this).next()來找到dt下面緊接的一個dd元素,這讓我們可以快速地選擇在被點擊問題下面的答案。
知博網(wǎng)(譯者Keel注:
這個例子真是太酷了,F(xiàn)AQ中的答案可以收縮!從利用next()的思路到實現(xiàn)這些效果都有jQuery教程專題很多地方需要我們消化,注意if(answer.is(‘:visible’))用法,注意answer.slideUp();不懂的地方趕緊查我在最開始提到的兩個必看API文檔)除了選擇同級別的元素外,你也可以選擇父級的元素。
可能你想在用戶鼠標移到文章某段的某個鏈接時,它的父級元素--也就是文章的這一段突出顯示,試試這個:
$(document).ready(function(){$(a).hover(function(){$(this).parents(p).addClass(highlight);},function(){$(this).parents(p).removeClass(highlight);});});測試效果可以看到,移到文章某段的鏈接時,它所在的段全用上highlight樣式,移走之后又恢復原樣。
(譯者Keel注:
highlight是core.css中定義的樣式,你也可以改變它,注意這里有第二個function()這是hover方法的特點,請在API文檔中查閱hover,上面也有例子說明)在我們繼續(xù)之前我們先來看看這一步:
jQuery會讓代碼變得更短從而更容易理解和維護,下面是$(document).ready(callback)的縮寫法:
$(function(){//codetoexecutewhentheDOMisready});應用到我們的Helloworld例子中,可以這樣:$(function(){$(a).click(function(){知博網(wǎng)alert(Helloworld!);});});jQuery教程專題現(xiàn)在,我們手上有了這些基礎(chǔ)的知識,我們可以更進一步的探索其它方面的東西,就從AJAX開始!本章的相關(guān)鏈接:jQueryAPIdocumentationVisualjQuery-AcategorizedbrowsableAPIdocumentationjQueryExpressions:CSSjQueryExpressions:XPathjQueryExpressions:CustomjQuerySpecialEventsjQueryDOMTraversingRateme使用AJAX在這一部分我們寫了一個小小的AJAX應用,它能夠rate一些東西(譯Keel注:
就是對某些東西投票),就像在上面看到的一樣。
首先我們需要一些服務器端代碼,這個例子中用到了一個PHP文件,讀取rating參數(shù)然后返回rating總數(shù)和平均數(shù)。
看一下rate.php代碼.雖然這些例子也可以不使用AJAX來實現(xiàn),但顯示我們不會那么做,我們用jQuery生成一個DIV容器,ID是rating.$(document).ready(function(){//generatemarkupvarratingMarkup=[Pleaserate:];for(vari=1;i=5;i++){知博網(wǎng)+/a;}//addmarkuptocontainerandapplierclickhandlerstoanchorsjQuery教程專題ratingMarkup[ratingMarkup.length]=ahref=‘#’+i$(#rating).append(ratingMarkup.join(‘‘)).find(a).click(function(e){e.preventDefault();//sendrequests$.post(rate.php,{rating:$(this).html()},function(xml){//formatresultvarresult=[Thanksforrating,currentaverage:,$(average,xml).text(),,numberofvotes:,$(count,xml).text()];//outputresult$(#rating).html(result.join(‘‘));});});});這段代碼生成了5個鏈接,并將它們追加到id為rating容器中,當其中一個鏈接被點擊時,該鏈接標明的分數(shù)就會以rating參數(shù)形式發(fā)送到rate.php,然后,結(jié)果將以XML形式會從服務器端傳回來,添加到容器中,替代這些鏈接。
知博網(wǎng)如果你沒有一個安裝過PHP的webserver,你可以看看這個在線的例子.不使用javascript實現(xiàn)的例子可以訪問softonic.de點擊Kurzbewerten!jQuery教程專題更多的AJAX方法可以從這里找到,或者看看API文檔下面的AJAXfiledunderAJAX.(譯者Keel注:
這個在線實例從國內(nèi)訪問還是比較慢的,點擊后要等一會兒才能看到結(jié)果,可以考慮對它進行修改,比如加上loading,投票后加上再投票的返回鏈接等。
此外,這個例子中還是有很多需要進一步消化的地方,看不懂的地方請參考API文檔。
)一個在使用AJAX載入內(nèi)容時經(jīng)常發(fā)生的問題是:
當載入一個事件句柄到一個HTML文檔時,還需要在載入內(nèi)容上應用這些事件,你不得不在內(nèi)容加載完成后應用這些事件句柄,為了防止代碼重復執(zhí)行,你可能用到如下一個function://letsusetheshortcut$(function(){varaddClickHandlers=function(){$(a.clickMeToLoadContent).click(function(){$(#target).load(this.href,addClickHandlers);});};addClickHandlers();});現(xiàn)在,addClickHandlers只在DOM載入完成后執(zhí)行一次,這是在用戶每次點擊具有clickMeToLoadContent這個樣式的鏈接并且內(nèi)容加載完成后.請注意addClickHandlers函數(shù)是作為一個局部變量定義的,而不是全局變量(如:
functionaddClickHandlers(){...}),這樣做是為了防止與其他的全局變量或者函數(shù)相沖突.知博網(wǎng)另一個常見的問題是關(guān)于回調(diào)(callback)的參數(shù)。
你可以通過一個額外的參數(shù)指定回調(diào)的方法,簡單的辦法jQuery教程專題是將這個回調(diào)方法包含在一個其它的function中://getsomedatavarfoobar=...;//specifyhandler,itneedsdataasaparamtervarhandler=function(data){...};//addclickhandlerandpassfoobar!$(‘a(chǎn)’).click(function(event){handler(foobar);});//ifyouneedthecontextoftheoriginalhandler,useapply:$(‘a(chǎn)’).click(function(event){handler.apply(this,[foobar]);});用到簡單的AJAX后,我們可以認為已經(jīng)非常之web2.0了,但是到現(xiàn)在為止,我們還缺少一些酷炫的效果。
下一節(jié)將會談到這些效果.本章的相關(guān)鏈接:jQueryAJAXModulejQueryAPI:ContainsdescriptionandexamplesforappendandallotherjQuerymethodsThickBox:AjQuerypluginthatusesjQuerytoenhancethefamouslightboxAnimatetme(讓我生動起來):使用FX一些動態(tài)的效果可以使用show()和hide()來表現(xiàn):$(document).ready(function(){$(a).toggle(function(){知博網(wǎng)$(.stuff).hide(‘slow’);},function(){$(.stuff).show(‘fast’);});});你可以與animate()聯(lián)合起來創(chuàng)建一些效果,如一個帶漸顯的滑動效果:$(document).ready(function(){$(a).toggle(function(){$(.stuff).animate({height:‘hide’,opacity:‘hide’},‘slow’);},function(){$(.stuff).animate({height:‘show’,opacity:‘show’},‘slow’);});});jQuery教程專題很多不錯的效果可以訪問interfaceplugincollection.這個站點提供了很多demos和文檔這些效果插件是位于jQuery插件列表的前面的,當然也有很多其他的插件,比如我們下一章講到的表格排序插件。
本章的相關(guān)鏈接:jQueryFXModule知博網(wǎng)InterfacepluginjQuery教程專題Sortme(將我有序化):使用tablesorter排序)插件(表格這個表格排序插件能讓我們在客戶端按某一列進行排序,引入jQuery和這個插件的js文件,然后告訴插件你想要哪個表格擁有排序功能。
要測試這個例子,先在starterkit.html中加上像下面這一行的代碼:
scriptsrc=lib/jquery.tablesorter.jstype=text/javascript/script然后可以這樣調(diào)用不著:$(document).ready(function(){$(#large).tableSorter();});現(xiàn)在點擊表格的第一行head區(qū)域,你可以看到排序的效果,再次點擊會按倒過來的順序進行排列。
這個表格還可以加一些突出顯示的效果,我們可以做這樣一個隔行背景色(斑馬線)效果:$(document).ready(function(){$(#large).tableSorter({stripingRowClass:[‘odd’,’even’],forstripingsupplyedasaarray.stripRowsOnStartUp:truetableSorterinit.});});//Classnames//Striprowson知博網(wǎng)關(guān)于這個插件的更多例子和文檔可以在tablesorter首頁找到.jQuery教程專題幾乎所有的特件都是這樣用的:先include插件的js文件,然后在某些元素上使用插件定義的方法,當然也有一些參數(shù)選項是可以配置的經(jīng)常更新的插件列表可以從jQuery官方站onthejQuerysite找到.當你更經(jīng)常地使用jQuery時,你會發(fā)現(xiàn)將你自己的代碼打包成插件是很有用處的,它能方便地讓你的公司或者其他人進行重用.下一章我們將談到如何構(gòu)建一個自己的插件.本章的相關(guān)鏈接:PluginsforjQueryTablesorterPluginPlugme制作自己的插件寫一個自己的jQuery插件是非常容易的,如果你按照下面的原則來做,可以讓其他人也容易地結(jié)合使用你的插件.1.為你的插件取一個名字,在這個例子里面我們叫它foobar.2.創(chuàng)建一個像這樣的文件:jquery.[yourpluginname].js,比如我們創(chuàng)建一個jquery.foobar.js3.創(chuàng)建一個或更多的插件方法,使用繼承jQuery對象的方式,如:jQuery.fn.foobar=function(){//dosomething};4.可選的:創(chuàng)建一個用于幫助說明的函數(shù),如:jQuery.fooBar={height:5,知博網(wǎng)calculateBar=function(){...},checkDependencies=function(){...}};你現(xiàn)在可以在你的插件中使用這些幫助函數(shù)了:jQuery.fn.foobar=function(){//dosomethingjQuery.foobar.checkDependencies(value);//dosomethingelse};jQuery教程專題5.可選的l:創(chuàng)建一個默認的初始參數(shù)配置,這些配置也可以由用戶自行設(shè)定,如:jQuery.fn.foobar=function(options){varsettings={value:5,name:pete,bar:655};if(options){jQuery.extend(settings,options);}};現(xiàn)在可以無需做任何配置地使用插件了,默認的參數(shù)在此時生效:$(...).foobar();或者加入這些參數(shù)定義:知博網(wǎng)$(...).foobar({value:123,bar:9});jQuery教程專題如果你release你的插件,你還應該提供一些例子和文檔,大部分的插件都具備這些良好的參考文檔.現(xiàn)在你應該有了寫一個插件的基礎(chǔ),讓我們試著用這些知識寫一個自己的插件.很多人試著控制所有的radio或者checkbox是否被選中,比如:$(input[@type=‘checkbox’]).each(function(){this.checked=true;//or,touncheckthis.checked=false;//or,totogglethis.checked=!this.checked;});無論何時候,當你的代碼出現(xiàn)each時,你應該重寫上面的代碼來構(gòu)造一個插件,很直接地:$.fn.check=function(){returnthis.each(function(){this.checked=true;});};這個插件現(xiàn)在可以這樣用:$(input[@type=‘checkbox’]).check();現(xiàn)在你應該還可以寫出uncheck()和toggleCheck()了.但是先停一下,讓我們的插件接收一些參數(shù).知博網(wǎng)$.fn.check=function(mode){varmode=mode||‘on’;//ifmodeisundefined,use‘on’asjQuery教程專題default};returnthis.each(function(){switch(mode){case‘on’:this.checked=true;break;case
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年重慶青年職業(yè)技術(shù)學院非編合同制工作人員招聘68人備考題庫及一套參考答案詳解
- 2025年蘇州農(nóng)業(yè)職業(yè)技術(shù)學院單招綜合素質(zhì)考試題庫附答案
- 高級廚師職業(yè)資格考試題及答案解析
- IT運維工程師面試題及系統(tǒng)操作測試含答案
- 2026年縣鄉(xiāng)教師選調(diào)考試《教師職業(yè)道德》題庫100道含答案
- 2026年初級銀行從業(yè)資格之初級銀行管理考試題庫500道及完整答案(各地真題)
- 2026年高等學校教師崗前培訓考試暨教師資格筆試題庫及答案【有一套】
- 2026年初級經(jīng)濟師考試題庫含答案【a卷】
- 2025年注冊會計師考試題庫500道附答案【培優(yōu)b卷】
- 2026年設(shè)備監(jiān)理師考試題庫500道含答案【a卷】
- 小品劇本《鍘美案》臺詞完整版遼寧民間藝術(shù)團宋小寶
- 電子合同取證流程規(guī)范
- 張家界航空工業(yè)職業(yè)技術(shù)學院單招職業(yè)技能測試參考試題庫(含答案)
- 醫(yī)藥代表如何成功拜訪客戶
- 科研倫理與學術(shù)規(guī)范-課后作業(yè)答案
- 交通銀行跨境人民幣業(yè)務介紹
- GB/T 33636-2023氣動用于塑料管的插入式管接頭
- 旅游地理學 國家公園建設(shè)與管理
- JJF(石化)036-2020漆膜附著力測定儀(劃圈法)校準規(guī)范
- 診所醫(yī)生聘用合同(3篇)
- JJG 693-2011可燃氣體檢測報警器
評論
0/150
提交評論