JQuery其他常用函數

n672 9年前發布 | 34K 次閱讀 jQuery Ajax框架

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。

 本文由用戶 n672 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!