jQuery 工具函數(shù)學(xué)習(xí)資料
$.param(obj)
返回 :string;
說明:將jquery對象按照name/value 或者key/value序列化為URL參數(shù),用&連接。
示例:
alert(jQuery.param(obj));
//alert "name=zh&age=20";
jQuery.trim(str)
返回:string;
說明:去掉字符串首尾空格。
示例:
//alert "123";
(1) :
&.each(obj,callback)
說明:
通用例遍方法,可用于例遍對象和數(shù)組。
不同于例遍 jQuery 對象的 $().each() 方法,此方法可用于例遍任何對象。
回調(diào)函數(shù)擁有兩個參數(shù):第一個為對象的成員或數(shù)組的索引,第二個為對應(yīng)變量或內(nèi)容。
如果需要退出 each 循環(huán)可使回調(diào)函數(shù)返回 false,其它返回值將被忽略。
示例:
var a =[0,1,2,3,4,5];
$.each(a,function(i,n){document.write(""+i+" and " +n +"<br/>");});
//result:
/*0 and 0
1 and 1
2 and 2
3 and 3
4 and 4
5 and 5I*/
(2):
$.extend(obj,default,option)
說明:
在開發(fā)插件的時候最常用此函數(shù)函數(shù)來處理options.
下面是fancybox插件獲取options的代碼:
settings = $.extend({}, $.fn.fancybox.defaults, settings);
上面的代碼target是一個空對象, 將默認(rèn)設(shè)置defaults作為第一個對象, 將用戶傳入的設(shè)置setting合并到default上, setting上有的屬性以setting為準(zhǔn). setting沒有傳入的屬性則使用default的默認(rèn)值. 然后將合并的結(jié)果復(fù)制給target并作為函數(shù)返回值返回.
看一個完整的示例:
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" }*/
//target參數(shù)要傳遞一個空對象是因為target的值最后將被改變.比如:
var defaults = { validate: false, limit: 5, name: "foo" }; var options = { validate: true, name: "bar" }; var settings = jQuery.extend(defaults, options);
上面的代碼將defaults作為target參數(shù), 雖然最后settings的結(jié)果一樣, 但是defaults的值被改變了! 而插件中的默認(rèn)值應(yīng)該都是固定! 所以使用時請注意target參數(shù)的用法.
(3):篩選
jQuery.grep( array, callback, [invert] )
返回值: Array
說明:
使用過濾函數(shù)過濾數(shù)組元素。
此函數(shù)至少傳遞兩個參數(shù):待過濾數(shù)組和過濾函數(shù)。過濾函數(shù)必須返回 true 以保留元素或 false 以刪除元素。
講解:
默認(rèn)invert為false, 即過濾函數(shù)返回true為保留元素. 如果設(shè)置invert為true, 則過濾函數(shù)返回true為刪除元素.
下面的示例演示如何過濾數(shù)組中索引小于 0 的元素:
$.grep( [0,1,2], function(n,i){ return n > 0; });
//results:[1,2]
(4).轉(zhuǎn)換
返回值:Array
說明:
將一個數(shù)組中的元素轉(zhuǎn)換到另一個數(shù)組中。
作為參數(shù)的轉(zhuǎn)換函數(shù)會為每個數(shù)組元素調(diào)用,而且會給這個轉(zhuǎn)換函數(shù)傳遞一個表示被轉(zhuǎn)換的元素作為參數(shù)。
轉(zhuǎn)換函數(shù)可以返回轉(zhuǎn)換后的值、null(刪除數(shù)組中的項目)或一個包含值的數(shù)組,并擴(kuò)展至原始數(shù)組中。
示例:
var arr = [ "a", "b", "c", "d", "e" ] ;
$("div").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()方法也很重要。
(1):
$.isFunction(fn)
返回:Boolean;
說明:測試是否為函數(shù);
示例:
var fn =function(){};
alert($.isFunction(fn));
//alert true;
(2):
$.isArray(obj);
返回:Boolean;
說明:測試是否為數(shù)組:
示例:略;
(3):
JavaScript只帶的 isNan()和isFinite():非數(shù)字和無窮大;
5:瀏覽器對象:
jQuery的優(yōu)秀就在于其跨瀏覽器的特性, 通常我們不用再針對不同瀏覽器書寫不同的代碼. 但是如果是jQuery開發(fā)人員或者插件開發(fā)人員就要自行處理瀏覽器差異, 以便為用戶提供跨瀏覽器的特性.
jQuery提供了下列屬性用于獲取瀏覽器特性:
1.3后版本新增 | |
jQuery.browser | 已廢除 |
已廢除 | |
jQuery.boxModel | 已廢除 |
$.support:
jQuery 1.3 新增。一組用于展示不同瀏覽器各自特性和bug的屬性集合。
jQuery提供了一系列屬性,你也可以自由增加你自己的屬性。其中許多屬性是很低級的,所以很難說他們能否在日新月異的發(fā)展中一直保持有效,但這這些主要用于插件和內(nèi)核開發(fā)者。
所有這些支持的屬性值都通過特性檢測來實現(xiàn),而不是用任何瀏覽器檢測。以下有一些非常棒的資源用于解釋這些特性檢測是如何工作的:
- http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting
- http://yura.thinkweb2.com/cft/
- http://www.jibbering.com/faq/faq_notes/not_browser_detect.html
jQuery.support主要包括以下測試:
boxModel: 如果這個頁面和瀏覽器是以W3C CSS盒式模型來渲染的,則等于true。通常在IE 6和IE 7的怪癖模式中這個值是false。在document準(zhǔn)備就緒前,這個值是null。
cssFloat: 如果用cssFloat來訪問CSS的float的值,則返回true。目前在IE中會返回false,他用styleFloat代替。
hrefNormalized: 如果瀏覽器從getAttribute("href")返回的是原封不動的結(jié)果,則返回true。在IE中會返回false,因為他的URLs已經(jīng)常規(guī)化了。
htmlSerialize: 如果瀏覽器通過innerHTML插入鏈接元素的時候會序列化這些鏈接,則返回true,目前IE中返回false。
leadingWhitespace: 如果在使用innerHTML的時候瀏覽器會保持前導(dǎo)空白字符,則返回true,目前在IE 6-8中返回false。
noCloneEvent: 如果瀏覽器在克隆元素的時候不會連同事件處理函數(shù)一起復(fù)制,則返回true,目前在IE中返回false。
objectAll: 如果在某個元素對象上執(zhí)行g(shù)etElementsByTagName("*")會返回所有子孫元素,則為true,目前在IE 7中為false。
opacity: 如果瀏覽器能適當(dāng)解釋透明度樣式屬性,則返回true,目前在IE中返回false,因為他用alpha濾鏡代替。
scriptEval: 使用 appendChild/createTextNode 方法插入腳本代碼時,瀏覽器是否執(zhí)行腳步,目前在IE中返回false,IE使用 .text 方法插入腳本代碼以執(zhí)行。
style: 如果getAttribute("style")返回元素的行內(nèi)樣式,則為true。目前IE中為false,因為他用cssText代替。
tbody: 如果瀏覽器允許table元素不包含tbody元素,則返回true。目前在IE中會返回false,他會自動插入缺失的tbody。
相關(guān)文章
jQuery響應(yīng)enter鍵的實現(xiàn)思路
當(dāng)用戶在表單里數(shù)據(jù)完數(shù)據(jù)后,之間按enter鍵就可以執(zhí)行查詢或者保存的操作。實現(xiàn)的思路如下2014-04-04基于jQuery的AJAX和JSON實現(xiàn)純html數(shù)據(jù)模板
jQuery內(nèi)置的AJAX功能,直接訪問后臺獲得JSON格式的數(shù)據(jù),從而實現(xiàn)純html數(shù)據(jù)模板,下面主要給大家介紹實現(xiàn)代碼,感興趣的朋友一起看下吧2016-08-08jquery UI Datepicker時間控件沖突問題解決
這篇文章主要介紹了jquery UI Datepicker時間控件沖突問題的解決,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12JQuery中的html()、text()、val()區(qū)別示例介紹
這篇文章主要介紹了JQuery中的html()、text()、val()的區(qū)別,需要的朋友可以參考下2014-09-09js原生態(tài)函數(shù)中使用jQuery中的 $(this)無效的解決方法
今天遇到一個聽郁悶的問題,正如title所說 js中原生態(tài)函數(shù)在jQuery 中使用 $(this) 被解析成undefined2011-05-05