15天學會jQuery (1-5)

what jQuery是一個了不起的.庫,它可以是我們用很少的幾句代碼就可以創建出漂亮的頁面效果。從網站的方面說,這使得.更加有趣。 如果你這樣想:“孩子,我需要另外一個.庫,就好比我I need another hole in my head”那麼加入這個俱樂部吧。這正是我第一次遇到的時候所想的。 我已經用過了Moo.fx, .aculous, TW-SACK, 和 Prototype. 我曾參與了RICO, Yahoo YUI和其他一些庫的開發。 沒有了PHP.和我一點也不親近了。但是我還是盡全力保持頭腦清醒,並儘量保持用AJAX去思考。 所以當我遇到jQuery的時候我想:“還需要另外一個.庫嗎?不了,謝謝…” why 爲什麼我改變我我對jQuery的看法,以及爲什麼你要考慮去使用它? 很簡單,只要你看一眼過使用jQuery的頁面你就會發現它是如此的簡單易用.只用很少的幾行,就能表現出很優雅的效果. 有一天當我突然看到一些用jQuery寫的代碼時我一下子豁然開朗了. 早茶的過程中,我例行公務的去翻閱我的訂閱,去看每日必看的設計博客的時候我看到了一個用jQuery寫的.的例子.事實證明,這些代碼還是有些和瀏覽器關聯的bug,不過這些概念還是我以前從來沒有見過的. 還有那些代碼… 代碼看起來很簡單看起來不像我以前見過的.但也不無道理. 我開始通讀文檔,並且驚奇的發現用一點點代碼竟然能做這麼多事情. when 你應當在你需要的時候使用jQuery. 給你一個小型的庫文件 DOM強大的控制能力 不費吹灰之力的工作,和少許的努力. 或者 快速的通過AJAX 沒有大量無用的代碼 和一些基本的動畫效果 但是 如果你需要超級花式效果,動畫,拖放,和超級平穩動畫,那麼你可能想使用Prototype.他是一個有大量動畫效果的類庫. where 你可以jQuery的官方網站下載到他的源代碼(10K). who jQuery was created by John Resig. 15 Days of jQuery(Day 1)---比window.onload更快一些的載入 window.onload()是傳統.裏一個能吃苦耐勞的傢伙。它長久以來一直被程序員們作爲儘快解決客戶端頁面載入問題的捷徑。 但有時候等待頁面載入還是不夠快。 只有少數大型的圖片文件會被快速的載入,而大部分大型的圖片文件會使window.onload()載入的很慢。所以當我爲最近的網絡營銷創建一個web應用程序的時候我不得希望更快一點。有一些圍繞window.onload()的新研究(比如brother cake)的代碼是一種快速的方式。如果你需要,可以試試。 但是如果你要做一些DOM(文檔對象模型).的編程,那麼你爲什麼不試試jQuery,它就像你自己親自制作一個蛋糕,並品嚐它。(雙關Brother Cake,俏皮話)。 jQuery有一個用來作爲DOM快速載入.的得心應手的小函數,那就是ready… 他在頁面加載完成之後執行。 $(document).ready(function(){ // Your code here... }); 你可以用他來載入任何你想要載入的.,並不一定要保留jQuery的編碼風格。讓jQuery同時去執行多個函數也是可以的。 你以前可能見過類似於init()之類的函數,你會發現jQuery會快很多。 在以後的教程裏我們會一遍又一遍的用到這個函數。 OK你現在可以嘗試一下代碼:(記得把jQuery引用進你的頁面哦,不記得的話看看上篇。) $(document).ready(function(){ alert("Congratluations!"); }); 很Easy,不是嗎? 用幾分鐘時間做的雙色表格。 15 Days of jQuery(Day 2)---很容易的製作雙色表格 這節本身沒有太多的價值,重點在它提供的這個例子上。我將代碼帖出來然後對重點部分註釋一下:我們先來看看Thewatchmakerproject傳統的做法:預覽地址(你可以查看一下源代碼)。再來看看jQuery是如何用5行代碼來搞定的:

<. src="jquery-latest.pack.js" type="text/.">

<. type="text/."> $(document).ready(function(){ //這個就是傳說的ready $(".stripe tr").mouseover(function(){ //如果鼠標移到class爲stripe的表格的tr上時,執行函數 $(this).addClass("over");}).mouseout(function(){ //給這行添加class值爲over,並且當鼠標一出該行時執行函數 $(this).removeClass("over");}) //移除該行的class $(".stripe tr:even").addClass("alt"); //給class爲stripe的表格的偶數行添加class值爲alt });

姓名年齡QQEmail
鄧國樑 23 31540205 [email protected]
鄧國樑 23 31540205 [email protected]
鄧國樑 23 31540205 [email protected]
鄧國樑 23 31540205 [email protected]
鄧國樑 23 31540205 [email protected]
鄧國樑 23 31540205 [email protected]

PS: 飄飄說我的table沒有,我知錯了...

預覽地址 這裏有一個jQuery的技巧不得不提一下:jQuery的鏈式操作,什麼是鏈式操作呢? 我們來看看,本來應該寫成這樣子的: $(".stripe tr").mouseover(function(){ $(this).addClass("over");}) $(".stripe tr").mouseout(function(){ $(this).removeClass("over"); }) 但是我們寫成了: $(".stripe tr").mouseover(function(){ $(this).addClass("over");}).mouseout(function(){ $(this).removeClass("over");}) 在jQuery中,執行完mouseover或者mouseout等方法之後,都會返回當前的對象,所以可以進行鏈式操作 15 Days of jQuery(Day 3)---巧妙的僞裝鏈接今天的教程是草草完成的.我想把一些東西放在這15天的前面簡單的講講,這樣以來就可以使一些js新手不至於被一堆代碼搞的暈頭轉向.事實上我是在即將結尾的時候才做出的這個決定. 目標 我們要使用jQuery去創建一小段代碼,這段代碼會把一個頁面所有的超鏈接轉換並且僞裝起來. 爲什麼? 一些下屬經銷商認爲,一部分用戶有足夠的悟性發現會員鏈接,並能儘量避免通過點擊URL鏈接直接進入瀏覽器,從而“欺騙”下屬經銷商脫離代理(假設購買行爲已經發生) “老”辦法 有很多下屬經銷商千方百計的掩飾他們的鏈接,避免人們通過鏈接找到他們.這些伎倆涉及到.htaccess和服務器端的代碼. 但對於本教程,我會將重點放到”老學校”的.上: Link Text Here 這段代碼被用來在瀏覽器狀態欄顯示用戶鼠標指向的鏈接地址.比如實際鏈接是www.website.com?aff=123,則可以在狀態欄顯示www.website.com. 問題 你是一個很活躍的下級經銷商,你可能會以瘋狂的速度給很多個頁面添加鏈接.並且還要給每個鏈接添加這種效果那麼你肯定會厭倦的.加入有一天你要修改任務欄裏顯示的鏈接的時候估計你會瘋掉的. jQuery的解決辦法 首先,我們想讓.儘快的掩飾我們的鏈接所以我們應該先從這裏開始: <. src="jquery.js"> <. type="text/."> $(document).ready(function(){ //code goes here }); 當DOM準備好的時候我們放在ready裏的代碼就開始執行了. 接下來 要給所有我們想僞裝的鏈接添加一個class,class有助於jQuery幫我們找到需要僞裝的鏈接而撇開其它不需要僞裝的鏈接.title有兩個作用:當鼠標劃過鏈接的時候會有一個小小的盒狀提示顯示URL:www.affsite.com並且同樣的信息會顯示在瀏覽器的狀態欄(IE .ly).

Super Duper Product

告訴jQuery找到有class=“affLink”的鏈接 $('a.affLink') 添加一個鼠標劃過事件 $('a.affLink').mouseover(function(){window.status=this.title;return true;}) 簡單的說:找到class=“affLink”的所有鏈接,當鼠標劃過它們的時候改變瀏覽器狀態欄信息爲該鏈接title的內容.這個在FireFox並不能正常的工作,只是在IE裏起作用.在FireFox的狀態欄只是顯示一個”Done”,或者更準確的說,鼠標劃過超鏈接對狀態欄並沒有任何影響.我沒有更多的瀏覽器測試. 繼續-mouseout jQuery可以讓我們用”鏈”的方式,像這樣: $('a.affLink').mouseover(function(){window.status=this.title;return true;}) .mouseout(function(){window.status='Done';return true;}); 這點代碼告訴jQuery改變瀏覽器狀態欄信息,或者當鼠標不再停留在鏈接上時返回”Done”. 如果你不適應jQuery的這種鏈的工作方式,那麼你完全可以這樣寫: $('a.affLink').mouseover(function(){window.status=this.title;return true;}); $('a.affLink').mouseout(function(){window.status='Done';return true;}); 這就看你了. 把這些代碼放到一起: <. src="jquery.js"> <. type="text/."> $(document).ready(function(){ $('a.affLink').mouseover(function(){window.status=this.title;return true;}) .mouseout(function(){window.status='Done';return true;}); }); 最後的想法 你們當中可能覺得今天的課程太簡單了,有些還可能還是有點不太明白,因爲你們不是二級經銷商. In “Days” to come you’ll see me tackle issues that get more involved and apply to almost anyone with a website - whether you monetize your traffic or not. 15 Days of jQuery(Day 4)---安全郵件列表規則提到如何防止垃圾郵件:不要把你的郵件地址放到任何一個mailto:鏈接中. 在與垃圾郵件惡魔做鬥爭的過程中我們的網頁設計師和程序員總結出了一些有創意的解決辦法,讓我們快速的看一些這些常見方法的缺點(或多或少有一些). name [at-no-spam] website.com 問題:鏈接式的更方便,而且把郵件地址敲入收件人欄還有可能會出錯. 聯繫方式 問題:你冒着這麼大的風險就是因爲有一個垃圾郵件借用你的帳戶發送大量的垃圾郵件(除非你使用真正的安全郵件腳本).而這樣就扼殺了那些只想給你發個簡單郵件的用戶. .加密 問題:你的郵件仍然暴露在光天化日之下,即使你使用了複雜的密碼技術給它帶上面具.還有誰希望爲了發送一封郵件而啓用第三方的解密網站,反正我是不會. 藏在一種簡單的形式後面 (有一個例子,但是打不開了.)http://simon.incutio.com/contact/我能想到的沒有人…但是讓我們看看是否我們能改進觀念。 可能的解決辦法:AJAX 我提供的解決方案將比目前設計師們使用的方法有如下優勢: 易於實施易於修改還有一些小小的花哨的效果不用第三方工具來加密郵件地址沒有郵件地址暴露在光天化日之下最後我想說明一點,我認爲電子郵件靠這種閃爍其詞的加密手段來躲避垃圾郵件還是非常不明智的.在實踐中,我認爲電子郵件加密是相對安全的,但是客觀事實是,電子郵件還是在html原代碼裏. 概念 1.用jQuery從服務器上把html文件內容抓下來. 2.把包含郵件鏈接的html文件放到好的容器中是一種簡單的保護機制. 示例 我要示範一些例子來顯示郵件鏈接地址,當訪客點擊一個按鈕或者一個鏈接的時候,頁面就會跳轉到對應的那個例子裏. 按鈕點擊--立即顯示 鏈接點擊--淡出 頁面載入--淡出 頁面載入--立即顯示 (說明:所謂的立即顯示,我的意思是說”沒有花哨的效果而儘快的顯示電子郵件地址”) 代碼 這裏發表非商業共創使用許可,如果你希望將代碼使用在你的商業產品中時,請聯繫我.我正在一個新的CMS for web designers中使用它. 爲什麼這種方式比普通的mailto鏈接安全? 真正的問題是垃圾郵件製造者會使用自動化軟件從html源文件中尋找電子郵件鏈接,這種做法和google一樣:使用相關鏈接. 他麼就和我們大部分人一樣懶惰.所以很難所他們不會拿個本子放在鍵盤旁邊記下你的電子郵件地址. 請查看我提供的示例的源代碼,你將不會在html裏找到任何的郵件地址. 這幾堅實的保證了你絕對不會收到垃圾郵件,只會從朋友或者瀏覽者那裏收到郵件. 但是從頁面中移除郵件地址,………………… 最後一點說明 先仔細看看前面三個例子,你會看到我使用了AJAX回調函數來觸發slideDown() 和 show() 效果. 換句話說,我希望AJAX調用收到信息(html)時jQuery纔開始slideDown() 效果.把祕密粘貼到我們簡單的服務段腳本並且等待服務器返回信息. 正確的方法: $(document).ready(function(){ $.post('mailtoInfo.php',{ pass: "secret" },function(txt){ $('div.email').html(txt); $('div.email').slideDown("slow"); }); }); 錯誤的方法: $(document).ready(function(){ $.post('mailtoInfo.php',{ pass: "secret" },function(txt){ $('div.email').html(txt); }); $('div.email').slideDown("slow"); }); 15 Days of jQuery(Day 5) 這個讓我們輕鬆的紀念日已經到來–我恨我在計算機前已經花了48個小時,我希望能夠有另外一個jQuery來結束我的噩夢,並且讓我上網更快。 當我一邊“在用Jquery方法編寫”和一邊“進行復雜的文件上傳”,我已經筋疲力盡。然而這兩種操作的代碼是一種較淺的,它只不過是你纔剛剛開始解決的一些簡單問題。 所以下來我開始介紹: 儘管我在我的網站用所有的CSS樣式表去進行表格設計(也許這要花費兩年半的時間或者更多),我已經用了很多我能找到的在這方面的信息。回到2004年5月(古代史)A list a part有一篇《關於創建陰影的偉大教程(洋蔥皮投影)》可以應用到任何圖片,無論尺寸多大. 那片文章的應經不能再評論了,但還是有些人希望能夠再出篇教程. 問題 一些css工程師用一些”不相干”的標記,就是爲了使背景圖片能夠應用到每一個元素上.例如: 這裏是A list a part用到的代碼:

The object casting a shadow

所有這些divs充當一個給圖片添加投影效果的”鉤子”.這不見得好,我們可以把源代碼精簡成這樣: The object casting a shadow 目標 在這裏,我要想你展示如何用jQuery輕而易舉的將多於的標記從你的源代碼中剔除.運用這個方法,讓你的代碼更加乾淨(更重要的是)將使以後變換佈局容易的多. 解 這裏,看看jQuery是如何擊退這個問題的. $(document).ready(function(){ $("img.dropshadow") .wrap("

" + "

"); }); 圖片就可以保持這樣了: The object casting a shadow 仔細看看 $(document).ready() 是jQuery版的window. $(“img.dropshadow”) 告訴jQuery找到帶有class=“dropshadow”的圖片,如果你想用一個id你可以這樣: $(“img#dropshadow”)wrap() (wrap() tells jQuery to use the DOM (Document Object Method Model) to wrap the images with the class=”dropshadow” in the html inside the parenthesis. ) 最後的結果 傻乎乎的圖片,但是和original Onion Skinned Drop Shadows用的是一樣的.

"); }); // -->

Onion Skinned - With jQuery

First, the old-school, multiple divs hard coded into the html as seen on the orignial article:

The object casting a shadow

And now, the jQuery method, which uses javascript to wrap the image at runtime:

The object casting a shadow

View the source of this page and you'll see the huge difference in markup!

(這裏只是代碼,沒有圖片.要看效果去這裏) jQuery和其它解決方法的比較 jQuery的網站上有一個到Ajaxian網站的鏈接,那裏有用另外一個javascrip庫創建的Onion Skin Drop Shadow ,我相信他的代碼複雜程度和代碼量現在看來自不待言.我寧願使用jQuery.(怎麼?你猜到了..) 平心而論,沒有一個庫是對於每一個工作或每一段代碼都是合適的.本教程不是爲了證明jQuery是一切javascrip類庫中的老大. 試試Prototype, Scriptaculous, YUI, Rico, Behaviour, Moo.fx 和 the dozens 或者其它的.如果你找到了一個你用起來比較順手的,那就去用它吧. jQuery對於我來說只是一個工具.我只是希望這個教程能夠提供給你更多使用它的方法. 有關jQuery的工具 jQuery用難以置信的簡單來操作DOM. 你應該花些時間看看jQuery能用來做什麼,用下append(), prepend(), before(), after(), html(), and remove(). 來自jQuery Docs wrap(String html) 把所有匹配的元素用其他元素的結構化標記包裝起來。這種包裝對於在文檔中插入額外的結構化標記最有用,而且它不會破壞原始文檔的語義品質。 這個函數的原理是檢查提供的第一個元素(它是由所提供的HTML標記代碼動態生成的),並在它的代碼結構中找到最上層的祖先元素--這個祖先元素就是包裝元素。 當HTML標記代碼中的元素包含文本時無法使用這個函數。因此,如果要添加文本應該在包裝完成之後再行添加。 示例: $("p").wrap("

"); HTML

Test Paragraph.

結果

Test Paragraph.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章