jquery為我們提供了操作陣列和物件的工具函數,方便和簡化了我們對它們的操作。今天我們就進入jQuery的工具函數的複習。
jQuery提供了我們主要有5類別工具函數:
陣列與物件操作 #測試操作
瀏覽器
URL運算
:$.param(obj)返回:string;說明:將jquery物件依name/value 或key/value序列化為URL參數,以&連接。
範例:
var obj ={name:zh,age:20};
alert(jQuery.param(obj));
&.each(obj,callback)
說明:
通用例遍方法,可用來例遍對象和數組。
不同於例遍 jQuery 物件的 $().each() 方法,此方法可用於例遍任何物件。
回呼函數
#//result:
/*0 and 0
1 and 12 and 2
3 and 34 and 4
5 and 5I*/##(2):
#$.extend(obj,default,option)
說明:
在開發外掛程式的時候最常用此函數函數來處理options.##下面是fancybox插件取得options的程式碼:
settings = $.extend({}, $.fn.fancybox.defaults, settings);
看一個完整的範例:
var empty = {} var defaults = { validate: false, limit: 5, name: "foo" }; var options = { validate: true, name: "bar" }; var settings = jQuery.extend(empty, defaults, options);
/*result:
settings == { validate: true, limit: 5, name: "bar" } empty == { validate: true, limit: 5, name: "bar" }*/
var defaults = { validate: false, limit: 5, name: "foo" }; var options = { validate: true, name: "bar" }; var settings = jQuery.extend(defaults, options);
jQuery.grep( array, callback, [invert] )
#傳回值: Array
##說明:#使用篩選函數過濾陣列元素。
講解:
預設invert為false, 即篩選函數傳回true為保留元素. 如果設定invert為true, 則篩選函數傳回true為刪除元素.下面的範例示範如何篩選陣列中索引小於0 的元素:
$.grep( [0,1,2], function(n,i){ return n > 0; });
//results:[1,2]
(4) .轉換
jQuery.map( array, callback ) 傳回值:Array
##說明:
將一個陣列中的元素轉換到另一個陣列中。 作為參數的轉換函數會為每個數組元素調用,並且會給這個轉換函數一個表示被轉換的元素作為參數。 轉換函數可以傳回轉換後的值、null(刪除陣列中的項目)或一個包含值的陣列,並擴展至原始陣列中。 範例:var arr = [ "a", "b", "c", "d", "e" ] ;$("p" ).text(arr.join(", "));arr = jQuery.map(arr, function(n, i){ return (n.toUpperCase() + i); });$("p").text(arr.join(", "));#arr = jQuery.map(arr, function (a) { return a + a; }) ;
alert(arr.join(", "));//alert A0A0, B1B1, C2C2, D3D3, E4E4(5)
jQuery.makeArray( obj ) , jQuery.inArray( value, array ) ,jQuery.merge( first, second ) ,
jQuery.unique( array )
就不再一一介紹了, 還有JavaScript
的join()和split()方法也很重要。 ###4:測試操作:######(1):######$.isFunction(fn)######傳回:Boolean;#### ##說明:測試是否為函數;######範例:######var fn =function(){};#######alert($.isFunction(fn));## #//alert true;
(2):
$.isArray(obj);
傳回:Boolean;
##說明:測試是否為陣列:範例:略;(3):JavaScript只帶的isNan()和isFinite():非數字和無限大;5:瀏覽器物件: jQuery的優秀就在於其跨瀏覽器的特性, 通常我們不用再針對不同瀏覽器書寫不同的程式碼. 但是如果是jQuery開發人員或外掛程式開發人員就要自行處理瀏覽器差異, 以便為使用者提供跨瀏覽器的特性.jQuery提供了下列屬性用於取得瀏覽器特性:
jQuery.support | #1.3後版本新增|
jQuery.browser | 已廢除|
jQuery.browser.version |
|
jQuery.boxModel |
boxModel
: 如果這個頁面和瀏覽器是以W3C CSS盒式模型來渲染的,則等於true。通常在IE 6和IE 7的怪癖模式中這個值是false。在document準備好前,這個值是null。cssFloat
: 如果用cssFloat來存取CSS的float的值,則傳回true。目前在IE中會回傳false,他用styleFloat代替。hrefNormalized
: 如果瀏覽器從getAttribute("href")傳回的是原封不動的結果,則傳回true。在IE中會回傳false,因為他的URLs已經常規化了。htmlSerialize
: 如果瀏覽器透過innerHTML插入連結元素的時候會序列化這些鏈接,則傳回true,目前IE中傳回false。leadingWhitespace
: 如果在使用innerHTML的時候瀏覽器會保持前導空白字符,則傳回true,目前在IE 6-8中傳回false。noCloneEvent: 如果瀏覽器在複製元素的時候不會連同事件處理
函數一起複製,則傳回true,目前在IE中傳回false。objectAll: 如果在某個元素物件上執行getElementsByTagName
("*")會傳回所有子孫元素,則為true,目前在IE 7中為false。opacity
: 如果瀏覽器能適當解釋透明度樣式屬性,則傳回true,目前在IE中傳回false,因為他用alpha濾鏡取代。scriptEval
: 使用 appendChild/createTextNode 方法插入腳本程式碼時,瀏覽器是否執行腳步,目前在IE中傳回false,IE使用 .text 方法插入腳本程式碼以執行。style
: 如果getAttribute("style")傳回元素的行內樣式,則為true。目前IE中為false,因為他用cssText代替。tbody
: 如果瀏覽器允許table元素不包含tbody元素,則傳回true。目前在IE中會回傳false,他會自動插入缺少的tbody。本部落格中同類文章還有,請見:我jQuery系列之目錄摘要
###以上是jQuery之工具函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!