jQuery中的100個技巧(上)

發表於2016-12-27

1.當document文件就緒時執行JavaScript程式碼。

我們為什麼使用jQuery庫呢?原因之一就在於我們可以使jQuery程式碼在各種不同的瀏覽器和存在bug的瀏覽器上完美執行。

 

2.使用route。

 

3.使用JavaScript中的AND技巧。

使用&&操作符的特點是如果操作符左邊的表示式是false,那麼它就不會再判斷操作符右邊的表示式了。所以:

 

4. is()方法比你想象的更為強大。

下面舉幾個例子,我們先寫一個id為elem的div。js程式碼如下:

其中判斷是否為動畫我覺得非常不錯。

 

5.判斷你的網頁一共有多少元素。

通過使用$(“*”).length屬性可以判斷網頁的元素數量。

 

6.使用length()屬性很笨重,下面我們使用exist()方法。

 

7.jQuery方法$()實際上是擁有兩個引數的,你知道第二個引數的作用嗎?

8.使用jQuery我們可以判斷一個連結是否是外部的,並來新增一個icon在非外部連結中,且確定開啟方式。

這裡用到了hostname屬性。

 

9.jQuery中的end()方法可以使你的jQuery鏈更加高效。

 

10.也許你希望你的web 應用感覺更像原生的,那麼你可以阻止contextmenu預設事件。

 

11.一些站點可能會使你的網頁在一個bar下面,即我們所看到在下面的網頁是iframe標籤中的,我們可以這樣解決。

 

 

12.你的內聯樣式表並不是被設定為不可改變的,如下:

這樣即可改變內聯樣式了。

 

13.有時候我們不希望網頁的某一部分內容被選擇比如複製貼上這種事情,我們可以這麼做:

這樣,內容就不能被選擇啦。

 

14.從CDN中引入jQuery,這樣的方法可以提高我們網站的效能,並且引入最新的版本也是一個不錯的主意。

下面會介紹四種不同的方法。

 

15.保證最小的DOM操作。

我們知道js操作DOM是非常浪費資源的,我們可以看看下面的例子。

 

16.更方便的分解URL。

也許你會使用正規表示式來解析URL,但這絕對不是一種好的方法,我們可以借用a標籤來實現它。

 

17.不要害怕使用vanilla.js。

jQuery揹負的太多,這便是原因,你可以用一般的js。

 

18.最優化你的選擇器

 

19.快取你的selector。

 

20.對於重複的函式只定義一次

如果你追求程式碼的更高效能,那麼當你設定事件監聽程式時必須小心,只定義一次函式然後把它的名字作為事件處理程式傳遞是不錯的方法。

 

21.像對待陣列一樣地對待jQuery物件

由於jQuery物件有index值和長度,所以這意味著我們可以把物件當作普通的陣列對待。這樣也會有更好地效能。

 

22.當做複雜的修改時要分離元素。

修改一個dom元素要求網頁重繪,這個代價是高昂的,所以如果你想要再提高效能,就可以嘗試著當對一個元素進行大量修改時先從頁面中分離這個元素,修改完之後再新增到頁面。

 

23.不要一直等待load事件。

我們已經習慣了把我們所有的程式碼都放在ready的事件處理程式中,但是,如果你的html頁面很龐大,decument ready恐怕會被延遲了,所以對於一些我們不希望ready後才可以觸發的事件可以放在html的head元素中。

 

24.當使用js給多個元素新增樣式時更好的做法是建立一個style元素。

我們之前提到過,操作dom是非常慢的,所以當新增多個元素的樣式時建立一個style元素並新增到document中是更好的做法。

 

25.給html元素分配一個名為JS的class。

現代的web apps非常的依賴js,這裡的一個技巧就是隻有當js可用時才能顯示特定的元素。看下面的程式碼。

這樣,只有js可用的時候id為message的元素才會顯示;如果不支援js,則該元素不會顯示。

 

26.監聽不存在的元素上的事件。

jQuery擁有一個先進的事件處理機制,通過on()方法可以監聽還不存在的事件。 這是因為on方法可以傳遞一個元素的子元素選擇器作為引數。看下面的例子:

這樣,即使li是後建立的,也可以通過on()方法來監聽。

 

27.只使用一次事件監聽。

有時,我們只需要繫結只執行一次的事件處理程式。那麼one()方法是一個不錯的選擇,通過它你就可以高枕無憂了。

 

28.模擬觸發事件。

我們可以通過使用trigger模擬觸發一個click事件。

29.使用觸控事件。

使用觸控事件和相關的滑鼠事件並沒有太多不同,但是你得有一個方便的移動裝置來測試會更好。看下面這個例子。

 

30.更好地使用on()/off()方法。

在jQuery1.7版本時對事件處理進行了簡化,看看下面的例子吧。

 

 

31.更快地阻止預設事件行為。

我們知道js中可以使用preventDefault()方法來阻止預設行為,但是jQuery對此提供了更簡單的方法。如下:

 

32.使用event.result連結多個事件處理程式。

對一個元素繫結多個事件處理程式並不常見,而使用event.result更可以將多個事件處理程式聯絡起來。看下面的例子。

這樣,控制檯會輸出Hip Hop!

 

33.建立你自己習慣的事件。

你可以使用on()方法建立自己喜歡的事件名稱,然後通過trigger來觸發。舉例如下:

 

34.在下載檔案旁顯示檔案大小。

你知道如何在不下載一個檔案的情況下通過傳送一個ajax請求頭得到一個檔案的大小嗎? 使用jQuery就很容易。

注意:這個例子如何我們直接使用瀏覽器是沒法得到的,必須使用本地的web伺服器開啟執行才可以。

 

35.使用延遲簡化你的Ajax請求

延遲(deferreds)是一個強大的工具。jQuery對於每一個Ajax請求都會返回一個deferred物件。 deferred.done()方法接受一個或多個引數,所有這些都引數可以是一個單一的函式或一個函式陣列。當Deferred(延遲)解決時,doneCallbacks被呼叫。回撥是依照他們新增的順序執行。一旦deferred.done()返回Deferred(延遲)物件,Deferred(延遲)可以連結其它的延遲物件,包括增加額外的.done()方法。下面這樣就會使你的程式碼更易讀:

 

36.平行的執行多個Ajax請求。

當我們需要傳送多個Ajax請求是,相反於等待一個傳送結束再傳送下一個,我們可以平行地傳送來加速Ajax請求傳送。

 

37.通過jQuery獲得ip

我們不僅可以在電腦上ping到一個網站的ip,也可以通過jQuery得到。

 

38.使用最簡單的ajax請求

jQuery(使用ajax)提供了一個速記的方法來快速下載內容並新增在一個元素中。

 

39.序列化物件

jQuery提供了一個方法序列化表單值和一般的物件成為URL編碼文字字串。這樣,我們就可以把序列化的值傳給ajax()作為url的引數,輕鬆使用ajax()提交表單了。

 

40.使用jQuery上傳二進位制檔案

現在的瀏覽器都支援FormData API,這可以是我們很輕鬆的通過ajax來傳送資料。 並將之結合HTML5中的File API,我們就可以上傳二進位制檔案了。

 

41.使用Facebook的圖表

我們可以引入facebook中的一個很強大的API來是我們的app更加社交化。下面是一個簡單的例子:


 

 

42.獲取天氣資訊

Open Weather Map提供了免費的天氣資訊,我們可以通過使用它們的JSON API來獲取資料。簡單的例子如下:

 

43. 獲取你的最近的湯博樂(Tumblr)內容

現在非常流行的湯博樂部落格服務提供了簡單的方法使用JSON api, 這樣我們可以使用它來獲取任何部落格內容,下面是使用的方法。

 

 

44.通過IP地址獲得地理位置

有很多線上服務可以告訴我們IP地址所在的城市和國家,下面我們先ping到百度的IP地址,然後獲取其地理位置:

 

45.使用YQL來爬網站

YQL對JavaScript開發者來說有無限的API,下面的例子是我們如何使用它來獲取並解析其他站點的HTML。

 

46.使用全域性的Ajax方法

我們可以通過ajax的全域性方法來簡化web app中處理的ajax請求。


 

47. 學會愛上console吧。

我們的瀏覽器給了我們一系列有用的方法使用來除錯程式碼,找出bug,下面就是一個例子,開啟console看看吧。

 

48.把程式碼轉化為外掛以提高重用率。

如果有一些程式碼你總是在不同的專案之間複製貼上,你就可以考慮著把它轉化成一個外掛了。下面的例子就是這樣。

 

49.使用匿名函式來產生一個獨立的程式碼塊

定義全域性變數和函式是一種程式碼很粗糙的行為,更好的方式是通過使用匿名函式使你的程式碼獨立於塊之中。看下面的例子:

 

50. 用extend融合物件

當提到從多個專案到一個專案結合屬性時,你最好的猜測就是擴充套件方法。

 

持續更新中…

相關文章