国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

jQuery each()方法的使用方法

2024-05-06 14:10:57
字體:
來源:轉載
供稿:網友
jQuery和jQuery對象都實現了該方法,對于jQuery對象,只是把each方法簡單的進行了委托:把jQuery對象作為第一個參數傳遞給jQuery的each方法.換句話說:jQuery提供的each方法是對參數一提供的對象的中所有的子元素逐一進行方法調用。而jQuery對象提供的each方法則是對jQuery內部的子元素進行逐個調用。
代碼如下:
jQuery.prototype.each=function( fn, args ) {
return jQuery.each( this, fn, args );
}

讓我們看一下jQuery提供的each方法的具體實現,
jQuery.each(obj,fn,arg)
該方法有三個參數:進行操作的對象obj,進行操作的函數fn,函數的參數args。
讓我們根據ojb對象進行討論:

1.obj對象是數組
each方法會對數組中子元素的逐個進行fn函數調用,直至調用某個子元素返回的結果為false為止,也就是說,我們可以在提供的fn函數進行處理,使之滿足一定條件后就退出each方法調用。當each方法提供了arg參數時,fn函數調用傳入的參數為arg,否則為:子元素索引,子元素本身
2.obj 對象不是數組
該方法同1的最大區別是:fn方法會被逐次不考慮返回值的進行進行。換句話說,obj對象的所有屬性都會被fn方法進行調用,即使fn函數返回false。調用傳入的參數同1類似。
代碼如下:
jQuery.each=function( obj, fn, args ) {
if ( args ) {
if ( obj.length == undefined ){
for ( var i in obj )
fn.apply( obj, args );
}else{
for ( var i = 0, ol = obj.length; i < ol; i++ ) {
if ( fn.apply( obj, args ) === false )
break;

}

}
} else {
if ( obj.length == undefined ) {
for ( var i in obj )
fn.call( obj, i, obj );
}else{
for ( var i = 0, ol = obj.length, val = obj[0]; i < ol && fn.call(val,i,val) !== false; val = obj[++i] ){}

}
}
return obj;
}

需要特別注意的是each方法中fn的具體調用方法并不是采用簡單的fn(i,val)或fn(args),而是采用了fn.call(val,i,val)或fn.apply(obj.args)的形式,這意味著,在你自己的fn的實現中,可以直接采用this指針引用數組或是對象的子元素。這種方式是絕大多數jQuery所采用的一種實現方式。
在jQuery里有一個each方法,用起來非常的爽,不用再像原來那樣寫for循環,jQuery源碼里自己也有很多用到each方法。
其實jQuery里的each方法是通過js里的call方法來實現的。
下面簡單介紹一下call方法。
call這個方法很奇妙,其實官方的說明是:“調用一個對象的一個方法,以另一個對象替換當前對象。”網上更多的解釋是變換上下文環境,也有說是改變上下文this指針。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
參數
thisObj
可選項。將被用作當前對象的對象。
arg1, arg2, , argN
可選項。將被傳遞方法參數序列。
說明
call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 依兰县| 陕西省| 平塘县| 乐东| 高邮市| 霍州市| 万州区| 阿荣旗| 会东县| 尉犁县| 盱眙县| 恩施市| 云龙县| 德昌县| 黎川县| 中宁县| 安庆市| 永年县| 泽州县| 和政县| 双峰县| 勃利县| 宁乡县| 嵊泗县| 贞丰县| 宁强县| 临清市| 驻马店市| 岳西县| 敖汉旗| 漳浦县| 桂阳县| 南漳县| 科技| 炉霍县| 汨罗市| 岑巩县| 泽州县| 饶阳县| 肥西县| 成安县|