JQuery其他常用函數
isArray(obj) 檢測obj否為一個數組對象
isFunction(obj) 檢測obj否為一個函數
isEmptyObject(obj) 檢測obj否為一個空對象
isPlainObject(obj) 檢測obj否為一個純粹對象(是否是通過{ }或new Object()關鍵字創建的)
data()函數
$(selector).data(name,value) 向被選元素附加數據
$(selector).data(name) 從被選元素中返回附加的數據
$(selector).data(object) 使用帶有名稱/值對的對象向被選元素添加數據
向元素附加數據,然后取回該數據:
$("#btn1").click(function(){ $("div").data("greeting","Hello World"); }); $("#btn2").click(function(){ alert($("div").data("greeting")); });
從元素中刪除之前添加的數據:
$("#btn2").click(function(){ $("div").removeData("greeting"); alert("Greeting is: " +$("div").data("greeting")); });
map()函數
map(array,function(elementOfArray,indexOfArray))
grep是過濾數組中的元素,map是按指定要求修改數組中的所選元素
將一組元素轉換成其他數組(不論是否是元素數組);
<p><b>Values:</b></p> <form> <input type="text"name="name" value="John"/> <input type="text"name="password" value="password"/> <input type="text"name="url" value="http://ejohn.org/"/> </form>
exampl:
$("p").append($("input").map(function(){ return $(this).val(); }).get().join(",") ); result: <p>John, password, http://ejohn.org/</p> $.map(attr,function(ele,index){ if(ele>5&&index<8){ return ele+1; } //將數組中元素值大于5并且序號小于8的元素加1 });
$.param()函數
$.param(object,[traditional])
object表示要被序列化的對象,該對象可以是數組、JQuery對象、普通對象
traditional表示是否通過普通的方式淺層序列化,返回序列化后的字符串
var myObject = { a: { one: 1, two: 2, three: 3 }, b: [1,2,3] }; var recursiveEncoded = $.param(myObject); var recursiveDecoded= decodeURIComponent($.param(myObject)); alert(recursiveEncoded); alert(recursiveDecoded);
recursiveEncoded和 recursiveDecoded 的值輸出如下:
a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3
如果被傳遞的對象在數組中,則必須是以.serializeArray() 的返回值為格式的對象數組
[ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: 'World'}, {name: 'alias'}, // 值為空 ]
$.proxy()函數
接受一個函數,然后返回一個新函數,并且這個新函數始終保持了特定的上下文(context )語境,這個方法通常在向一個元素上附加事件處理函數時,上下文語境實際是指向另一個對象的情況下使用。
另外,jQuery 能夠確保即使你綁定的函數是經過 jQuery.proxy() 處理過的函數,你依然可以用原先的函數來正確地取消綁定。
jQuery.proxy(function, context )
function將要改變上下文語境的函數。
context函數的上下文語境(`this`)會被設置成這個object 對象。
jQuery.proxy(context, name )
context函數的上下文語境會被設置成這個 object 對象。
name將要改變上下文語境的函數名(這個函數必須是前一個參數 ‘context’ 對象的屬性)
<pre name="code" class="javascript">var objMyInfo = { name : "clf", sex : "男", ShowEvent : function(){ alert(this.name+"****"+this.sex); } } $("#bnt").bind("click",$.proxy(objMyInfo.ShowEvent,objMyInfo));
如果不用proxy函數,則出發click 事件時,調用objMyInfo.ShowEvent函數,此函數內的this關鍵字將指向非objMyInfo上下文,那么,this.name和this.sex都將是一個undifined的變量
$.trim(“ text ”)
去除字符前后的空格
$.support
瀏覽器檢測函數
boxModel: 如果這個頁面和瀏覽器是以W3CCSS盒式模型來渲染的,則等于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。