多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > web前端 > jquery > jQuery1.3.2源碼學習7:setArray,each 函數(shù)

jQuery1.3.2源碼學習7:setArray,each 函數(shù)

來源:程序員人生   發(fā)布時間:2014-01-10 04:56:55 閱讀次數(shù):3443次
119 // Take an array of elements and push it onto the stack
120 // (returning the new matched element set)
121 pushStack: function( elems, name, selector ) {
122 // Build a new jQuery matched element set
123 var ret = jQuery( elems );
// Add the old object onto the stack (as a reference)
126 ret.prevObject = this;

128 ret.context = this.context;

130 if ( name === "find" )
ret.selector = this.selector + (this.selector ? " " : "") + selector;
else if ( name )
ret.selector = this.selector + "." + name + "(" + selector + ")";

// Return the newly-formed element set
return ret;
137 },

121 行開始的 pushStack 方法用來將通過數(shù)組傳遞的一個集合,格式化成為一個標準的 jQuery 對象,這樣就可以使用 jQuery 提供的方法進行操作了。第 123 將數(shù)組轉化為一個 jQuery 對象。參見 91 行。
126 行通過 prevObject 屬性指向原來的數(shù)組對象,128行保存當前的環(huán)境引用。
130 行檢查是否要在數(shù)組上進行進一步的查詢,如果提供了查詢, 那么更新當前的選擇器 selector。
136 行,返回構造完成的 jQuery 對象。

// Force the current matched set of elements to become
// the specified array of elements (destroying the stack in the process)
// You should use pushStack() in order to do this, but maintain the stack
142 setArray: function( elems ) {
// Resetting the length to 0, then using the native Array push
// is a super-fast way to populate an object with array-like properties
this.length = 0;
Array.prototype.push.apply( this, elems );

return this;
},
142 行的 setArray 方法用來將通過參數(shù)傳遞進來的數(shù)組,替換掉當前的 jQuery 對象中的查詢結果。

// Execute a callback for every element in the matched set.
// (You can seed the arguments with an array of args, but this is
// only used internally.)
154 each: function( callback, args ) {
return jQuery.each( this, callback, args );
},
each 方法用來遍歷查詢結果,方法接受一個回調(diào)函數(shù),jQuery 將遍歷查詢結果,對于每一個查詢結果對象,調(diào)用這個回調(diào)函數(shù),并通過參數(shù)傳遞 this 和參數(shù)引用。
具體的 each 方法見 671 行函數(shù)的定義。

671 each: function( object, callback, args ) {
672 var name, i = 0, length = object.length;
673
674 if ( args ) {
if ( length === undefined ) {
for ( name in object )
if ( callback.apply( object[ name ], args ) === false )
break;
679 } else
680 for ( ; i < length; )
if ( callback.apply( object[ i++ ], args ) === false )
break;

// A special, fast, case for the most common use of each
685 } else {
686 if ( length === undefined ) {
687 for ( name in object )
if ( callback.call( object[ name ], name, object[ name ] ) === false )
break;
690 } else
691 for ( var value = object[0];
692 i < length && callback.call( value, i, value ) !== false;
value = object[++i] ){}
693 }

695 return object;
696 },
Each 的第一個參數(shù)為一個 jQuery 對象,第二個參數(shù)為處理每一個對象的回調(diào)函數(shù),第三個參數(shù)可以為回調(diào)函數(shù)提供一個額外的參數(shù)。
注意,如果回調(diào)函返回假,那么結束遍歷過程。

674 行判斷是否提供了額外的參數(shù),如果沒有提供,那么,執(zhí)行 685行 else 語句部分的常用遍歷處理。
686 行檢查對象是否提供了 length 屬性,如果沒有,那么 687 行通過 for in 語句直接遍歷對象的所有成員,對于每一個屬性,使用 callback 進行處理,為了將當前的對象作為 this 傳遞給回調(diào)函數(shù),使用了 call 的調(diào)用方式。
691 行和 692 行處理有 length 屬性的情況,直接通過長度進行遍歷。
如果有參數(shù)數(shù)組傳遞進來,那么,轉到 675 行進行處理。
檢查對象是否有 length 屬性,如果沒有使用 for in 語句,如果有,使用下標進行遍歷。
680 行處理有 length 屬性的情況,這時,直接通過數(shù)組的長度進行遍歷,由于參數(shù)使用了數(shù)組方式,所以通過 apply 將當前對象作為 this,其他參數(shù)作為數(shù)組進行調(diào)用。

來源:博客園

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美爱爱网站 | 好大好湿好硬顶到了好爽在 | 亚洲图片自拍偷拍 | 成人网在线视频 | 波多野结衣一区二区三区 | 欧洲亚洲一区二区三区 | 成人区精品一区二区不卡亚洲 | 午夜精品国产爱在线观看不卡 | 欧美色图一区 | 国产综合久久一区二区三区 | 伊人资源 | 涩综合 | 亚洲成人影院在线 | 欧美日韩综合一区 | 国产九九免费视频网站 | 性配久久久 | www.操你| 亚洲精品午夜久久aaa级久久久 | 伊人最新网址 | 欧美日韩亚洲精品一区二区 | 一区一区三区产品乱码 | 美国一级特级毛片片aa视频 | 欧美一区二区精品系列在线观看 | 亚洲欧美精品天堂久久综合一区 | 亚洲高清免费视频 | 欧美videosex性欧美成人 | 亚洲国产福利精品一区二区 | 香港三级吃孕妇奶水 | 边摸边吃奶边做3p视频 | 久久男人 | 国产精品高清久久久久久久 | 亚洲精品久久久午夜伊人 | 天堂最新版| 日本亚洲乱码中文字幕影院 | 中文字幕一区二区在线播放 | 久久精品亚洲精品国产欧美 | 欧美黑人三级 | 欧美日韩一区二区三区四区在线观看 | 欧美亚洲另类小说 | 日本不卡一区二区三区视频 | 九九欧美 |