jquery中$.each()的用法
each()函數是基本上所有的框架都提供了的一個工具類函數,通過它,你可以遍歷對象、數組的屬性值並進行處理。jQuery和jQuery對象都實 現了該方法,對於jQuery對象,只是把each方法簡單的進行了委托:把jQuery對象作為第一個參數傳遞給jQuery的each方法.換句話 說:jQuery提供的each方法是對參數一提供的對象的中所有的子元素逐一進行方法調用。而jQuery對象提供的each方法則是對jQuery內 部的子元素進行逐個調用。
each函數根據參數的類型實現的效果不完全一致:
1、遍歷對象(有附加參數)
復制代碼 代碼如下:
$.each(Object, function(p1, p2) {
this; //這裏的this指向每次遍歷中Object的當前屬性值
p1; p2; //訪問附加參數
}, [‘參數1‘, ‘參數2‘]);
2、遍歷數組(有附件參數)
復制代碼 代碼如下:
$.each(Array, function(p1, p2){
this; //這裏的this指向每次遍歷中Array的當前元素
p1; p2; //訪問附加參數
}, [‘參數1‘, ‘參數2‘]);
3、遍歷對象(沒有附加參數)
復制代碼 代碼如下:
$.each(Object, function(name, value) {
this; //this指向當前屬性的值
name; //name表示Object當前屬性的名稱
value; //value表示Object當前屬性的值
});
4、遍歷數組(沒有附加參數)
復制代碼 代碼如下:
$.each(Array, function(i, value) {
this; //this指向當前元素
i; //i表示Array當前下標
value; //value表示Array當前元素
});
下面提一下jQuery的each方法的幾種常用的用法
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
var arr = [ "one" , "two" , "three" , "four" ];
$.each(arr, function (){
alert( this );
});
//上面這個each輸出的結果分別為:one,two,three,four
var arr1 = [[1, 4, 3], [4, 6, 6], [7, 20, 9]]
$.each(arr1, function (i, item){
alert(item[0]);
});
//其實arr1為一個二維數組,item相當於取每一個一維數組,
//item[0]相對於取每一個一維數組裏的第一個值
//所以上面這個each輸出分別為:1 4 7
var obj = { one:1, two:2, three:3, four:4};
$.each(obj, function (key, val) {
alert(obj[key]);
});
//這個each就有更厲害了,能循環每一個屬性
//輸出結果為:1 2 3 4
|
JQuery中的each函數在1.3.2的官方文檔中的描述如下:
each(callback)
以每一個匹配的元素作為上下文來執行一個函數。
意味著,每次執行傳遞進來的函數時,函數中的this關鍵字都指向一個不同的DOM元素(每次都是一個不同的匹配元素)。而且,在每次執行函數時,都會給函數傳遞一個表示作為執行環境的元素在匹配的元素集合中所處位置的數字值作為參數(從零開始的整形)。返回
‘false‘ 將停止循環 (就像在普通的循環中使用 ‘break‘)。返回 ‘true‘ 跳至下一個循環(就像在普通的循環中使用‘continue‘)。
而後面的callback 則是回調函數,指示遍歷元素的時候應該賦予的操作。先看下面的一個簡單的例子:
叠代兩個圖像,並設置它們的 src
屬性。註意:此處 this 指代的是 DOM 對象而非 jQuery 對象。
HTML 代碼:
<img/><img/>jQuery 代碼:
$("img").each(function(i){
this.src = "test" + i + ".jpg";
});
結果:[ <img src="test0.jpg" />, <img src="test1.jpg" /> ]
當然,在遍歷元素的時候,jquery是允許自定義跳出的,請看示例代碼:你可以使用 ‘return‘ 來提前跳出 each() 循環。
HTML 代碼:
復制代碼 代碼如下:
<button>Change colors</button>
<span></span>
<div></div>
<div></div>
<div></div>
<div></div>
<div id="stop">Stop here</div>
<div></div>
<div></div>
<div></div>
jQuery 代碼:
復制代碼 代碼如下:
$("button").click(function(){
$("div").each(function(index,domEle){
$(domEle).css("backgroundColor","wheat");
if($(this).is("#stop")){
$("span").text("在div塊為#"+index+"的地方停止。");
return false;
}
});
或者這麽寫:
復制代碼 代碼如下:
$("button").click(function(){
$("div").each(function(index){
$(this).css("backgroundColor","wheat");
if($(this).is("#stop")){
$("span").text("在div塊為#"+index+"的地方停止。");
return false;
}
});
圖解:
each() 方法規定為每個匹配元素規定運行的函數。
提示:返回 false 可用於及早停止循環。
語法
$(selector).each(function(index,element))參數 描述
function(index,element) 必需。為每個匹配元素規定運行的函數。
?index - 選擇器的 index 位置
?element - 當前的元素(也可使用 "this" 選擇器
實例
輸出每個 li 元素的文本:
復制代碼 代碼如下:
$("button").click(function(){
$("li").each(function(){
alert($(this).text())
});
});
實例
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指針引用數組或是對象的子元素。
那怎麽跳出each呢
jquery再遍歷選定的對象時候用each比較方便。有種應用是找到裏面符合條件的對象後,要跳出這個循環。
javascript的跳出循環一般用break.
同事遇到這個問題,下意識 的用了break,想跳出這個循環。結果報錯
SyntaxError: unlabeled break must be inside loop or switch
經查,應該用一個
在回調函數裏return false即可,大多數jq的方法都是如此的
復制代碼 代碼如下:
返回 ‘false‘ 將停止循環 (就像在普通的循環中使用 ‘break‘)。
返回 ‘true‘ 跳至下一個循環(就像在普通的循環中使用‘continue‘)。
您可能感興趣的文章:
- jQuery.Autocomplete實現自動完成功能(詳解)
- 12款經典的白富美型—jquery圖片輪播插件—前端開發必備
- jquery 如何動態添加、刪除class樣式方法介紹
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法總結
- jQuery EasyUI API 中文文檔 - DataGrid數據表格
- JQuery觸發radio或checkbox的change事件
- jquery ajax提交表單數據的兩種方式
- jquery中獲取id值方法小結
- jQuery EasyUI API 中文文檔 - ComboBox組合框
- 手機移動端實現 jquery和HTML5 Canvas的幸運大獎盤特效
微信公眾號搜索 “ 腳本之家 ” ,選擇關註
程序猿的那些事、送書等活動等著你
相關文章
-
jQuery實現限制textarea文本框輸入字符數量的方法
這篇文章主要介紹了jQuery實現限制textarea文本框輸入字符數量的方法,涉及jQuery鍵盤事件及頁面元素的相關操作技巧,需要的朋友可以參考下 2015-05-05 -
jQuery實現導航欄頭部菜單項點擊後變換顏色的方法
這篇文章主要介紹了jQuery實現導航欄頭部菜單項點擊後變換顏色的方法,涉及jQuery響應鼠標事件針對頁面元素的遍歷及屬性變換相關操作技巧,需要的朋友可以參考下 2017-07-07 -
jQuery 美元符沖突的解決方法
jQuery 美元符沖突的解決方法,使用jquery與別的js庫共同使用的時候需要註意的地方。 2010-03-03 -
輕松學習jQuery插件EasyUI EasyUI創建RSS Feed閱讀器
這篇文章主要幫助大家輕松學習jQuery插件EasyUI,我們將通過 jQuery EasyUI框架創建一個RSS閱讀器,感興趣的小夥伴們可以參考一下 2015-11-11 -
jQuery圖片輪播實現並封裝(一)
這篇文章主要為大家詳細介紹了jQuery圖片輪播實現並封裝,具有一定的參考價值,感興趣的小夥伴們可以參考一下 2016-12-12 -
基於jQuery替換table中的內容並顯示進度條的代碼
這個例子使我更加明白呈現數據是前端工作滴一部分,如何使table中的數值變為清晰地條狀圖呢?聽我細細道來 2011-08-08 -
jQuery實現為圖片添加鏡頭放大效果的方法
這篇文章主要介紹了jQuery實現為圖片添加鏡頭放大效果的方法,提供了四種放大鏡效果供大家選擇使用,並附有完整的源碼下載地址,需要的朋友可以參考下 2015-06-06 -
基於jQuery Circlr插件實現產品圖片360度旋轉
Circlr是一款可以對產品圖片進行360度全方位旋轉展示的jQuery插件,本文給大家分享一款基於jQuery Circlr插件實現產品圖片360度旋轉,大家一起來看看吧 2015-09-09 -
JQuery實現動態表格點擊按鈕表格增加一行
動態表格,功能為點擊添加按鈕,表格增加一行並給其name屬性賦予的值,點擊刪除,自動刪除這一行,具體實現如下 2014-08-08 -
jquery無限級聯下拉菜單簡單實例演示
這篇文章主要向大家推薦了一個jquery無限級聯下拉菜單簡單實例演示,感興趣的小夥伴們可以參考一下 2015-11-11
最新評論
大家感興趣的內容
- 1jquery加載頁面的方法(頁面加載完
- 2jQuery判斷checkbox是否選中的3種
- 3JQuery 綁定select標簽的onchang
- 4jquery獲取復選框被選中的值
- 5jquery $(document).ready() 與w
- 6jquery 將disabled的元素置為ena
- 7jquery中獲取id值方法小結
- 8Jquery獲取和修改img的src值的方
- 9jQuery.Autocomplete實現自動完成
- 10JQuery中each()的使用方法說明
最近更新的內容
- Juery解決tablesorter中文排序和字符範圍
- jquery分頁插件jpaginate在IE中不兼容問題
- jquery圖形密碼實現方法
- jQuery實現淡入淡出二級下拉導航菜單的方
- jQuery如何跳轉到另一個網頁 就這麽簡單
- jQuery學習之prop和attr的區別示例介紹
- JQuery對表格進行操作的常用技巧總結
- jQuery給div,Span, a ,button, radio 賦
- 學習從實踐開始之jQuery插件開發 菜單插件
- Jquery 實現checkbox全選方法
眾生網絡
品牌服務器租用集思網絡
VPS主機楓信科技
IDC服務商常用在線小工具
- CSS代碼工具
- JavaScript代碼格式化工具
- 在線XML格式化/壓縮工具
- php代碼在線格式化美化工具
- sql代碼在線格式化美化工具
- 在線HTML轉義/反轉義工具
- 在線JSON代碼檢驗/檢驗/美化/格式化
- JavaScript正則在線測試工具
- 在線生成二維碼工具(加強版)
- 更多在線工具
jquery中$.each()的用法