復制代碼

創(chuàng)新互聯(lián)是專業(yè)的眉縣網(wǎng)站建設公司,眉縣接單;提供網(wǎng)站設計制作、成都做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行眉縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
代碼如下:
//
args
is
for
internal
usage
only
each:
function(
object,
callback,
args
)
{
var
name,
i
=
0,
length
=
object.length,
isObj
=
length
===
undefined
||
jQuery.isFunction(object);
if
(
args
)
{
if
(
isObj
)
{
for
(
name
in
object
)
{
if
(
callback.apply(
object[
name
],
args
)
===
false
)
{
break;
}
}
}
else
{
for
(
;
i
length;
)
{
if
(
callback.apply(
object[
i++
],
args
)
===
false
)
{
break;
}
}
}
//
A
special,
fast,
case
for
the
most
common
use
of
each
}
else
{
if
(
isObj
)
{
for
(
name
in
object
)
{
if
(
callback.call(
object[
name
],
name,
object[
name
]
)
===
false
)
{
break;
}
}
}
else
{
for
(
var
value
=
object[0];
i
length
callback.call(
value,
i,
value
)
!==
false;
value
=
object[++i]
)
{}
}
}
return
object;
},
分析:jquery文檔說
each(callback)作用是以每一個匹配的元素作為上下文來執(zhí)行一個函數(shù)。就是用each來遍歷數(shù)組,來執(zhí)行同一個方法
這個方法的實現(xiàn)最關鍵的是:call與apply的用法:call(apply)就是將函數(shù)的對象的從初始的上下文改為thisObj指向的對象,
就是說用thisObj來代替原來的對象來執(zhí)行方法:call與apply的第一個參數(shù)為this指向的對象,而后面的參數(shù)都下傳給函數(shù)的,
call傳給函數(shù)的參數(shù)用逗號分隔而apply則為一個數(shù)組。
//1.callback.apply(
object[
name
],
args
)
//2.callback.call(
object[
name
],
name,
object[
name
]
)
遍歷一個jQuery對象,為每個匹配元素執(zhí)行一個函數(shù)。
ul????
lifoo/li????
libar/li
/ul
$(?"li"?).each(function(?index?)?{??
console.log(?index?+?":?""?+?$(this).text()?);
});
//或者一個數(shù)組,集合,map
$.each(集合,function(){
console.log(?集合.name+?":?""?+集合.age?);
});
each()就是循環(huán),給你例子吧,比如你的頁面只有 3對p標簽p1/pp2/pp3/p$("p").each(function(i){//這樣寫它就是循環(huán)三次,其中function中的i就是指索引alert(i);//彈出循環(huán)到當前p的索引,索引從0開始,你可以試試,執(zhí)行程序看效果就是最好的理解alert($(this).text());//彈出循環(huán)到當前p的文本});
語法:
$.each(
collection,
callback(indexInArray,
valueOfElement)
)
值得一提的是,forEach
可以很方便的遍歷數(shù)組和
NodeList
,jQuery
中的
jQuery
對象本身已經(jīng)部署了這類遍歷方法,而在原生
JavaScript
中則可以使用
forEach
方法,但是
IE
并不支持,因此我們可以手動把
forEach
方法部署到數(shù)組和
NodeList
中:
if
(
!Array.prototype.forEach
){
Array.prototype.forEach
=
function(fn,
scope)
{
for(
var
i
=
0,
len
=
this.length;
i
len;
++i)
{
fn.call(scope,
this[i],
i,
this);
}
}
}
//
部署完畢后
IE
也可以使用
forEach
了
document.getElementsByTagName('p').forEach(function(e){
e.className
=
'inner';
});
而jQuery中的$.each()函數(shù)則更加強大。$.each()函數(shù)和$(selector).each()不一樣。$.each()函數(shù)可以用來遍歷任何一個集合,不管是一個JavaScript對象或者是一個數(shù)組,如果是一個數(shù)組的話,回調(diào)函數(shù)每次傳遞一個數(shù)組的下標和這個下標所對應的數(shù)組的值(這個值也可以在函數(shù)體中通過this關鍵字獲取,但是JavaScript通常會把this這個值當作一個對象即使他只是一個簡單的字符串或者是一個數(shù)字),這個函數(shù)返回所遍歷的對象,也就是這個函數(shù)的第一個參數(shù),注意這里還是原來的那個數(shù)組,這是和map的區(qū)別。
其中collection代表目標數(shù)組,callback代表回調(diào)函數(shù)(自己定義),回調(diào)函數(shù)的參數(shù)第一個是數(shù)組的下標,第二個是數(shù)組的元素。當然我們也可以給回調(diào)函數(shù)只設定一個參數(shù),這個參數(shù)一定是下標,而沒有參數(shù)也是可以的。
例1:傳入數(shù)組
!DOCTYPE
html
html
head
script
src=””/script
/head
body
script
$.each([52,
97],
function(index,
value)
{
alert(index
+
‘:
‘
+
value);
});
/script
/body
/html
輸出:
0:
52
1:
97
例2:如果一個映射作為集合使用,回調(diào)函數(shù)每次傳入一個鍵-值對
!DOCTYPE
html
html
head
script
src=””/script
/head
body
script
var
map
=
{
‘flammable':
‘inflammable',
‘duh':
‘no
duh'
};
$.each(map,
function(key,
value)
{
alert(key
+
‘:
‘
+
value);
});
/script
/body
/html
輸出:
flammable:
inflammable
duh:
no
duh
例3:回調(diào)函數(shù)中
return
false時可以退出$.each(),
如果返回一個非false
即會像在for循環(huán)中使用continue
一樣,
會立即進入下一個遍歷
!DOCTYPE
html
html
head
style
div
{
color:blue;
}
div#five
{
color:red;
}
/style
script
src=””/script
/head
body
div
id=”one”/div
div
id=”two”/div
div
id=”three”/div
div
id=”four”/div
div
id=”five”/div
script
var
arr
=
[
"one",
"two",
"three",
"four",
"five"
];//數(shù)組
var
obj
=
{
one:1,
two:2,
three:3,
four:4,
five:5
};
//
對象
jQuery.each(arr,
function()
{
//
this
指定值
$(“#”
+
this).text(“Mine
is
”
+
this
+
“.”);
//
this指向為數(shù)組的值,
如one,
two
return
(this
!=
“three”);
//
如果this
=
three
則退出遍歷
});
jQuery.each(obj,
function(i,
val)
{
//
i
指向鍵,
val指定值
$(“#”
+
i).append(document.createTextNode(”
–
”
+
val));
});
/script
/body
/html
輸出
:
Mine
is
one.
–
1
Mine
is
two.
–
2
Mine
is
three.
–
3
-
4
-
5
網(wǎng)頁題目:jquery的each,jquery的each循環(huán)continue
鏈接URL:http://chinadenli.net/article22/dsijecc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、移動網(wǎng)站建設、商城網(wǎng)站、動態(tài)網(wǎng)站、Google、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)