$.each():可用于遍歷任何的集合(無論是數組或對象)
$(selector).each():專用于jquery對象的遍歷,
如果是數組,回調函數每次傳入數組的索引和對應的值(值亦可以通過this 關鍵字獲取,但javascript總會包裝this 值作為一個對象—盡管是一個字符串或是一個數字),方法會返回被遍歷對象的第一參數.
each的幾種常用的用法
①一維數組:var
arr1 = [
"aaa"
,
"bbb"
,
"ccc"
];
$.each(arr1, function(i,val){ alert(i); alert(val); });
alert(i)將輸出0,1,2
alert(val)將輸出aaa,bbb,ccc
②一維數組:var
arr2 = [[
'a'
,
'aa'
,
'aaa'
], [
'b'
,
'bb'
,
'bbb'
], [
'c'
,
'cc'
,
'ccc'
]]
$.each(arr2, function(i, item){ alert(i); alert(item); }); //arr2為一個二維數組,item相當于取這二維數組中的每一個數組。 //item[0]相對于取每一個一維數組里的第一個值 alert(i)將輸出為0,1,2,因為這二維數組含有3個數組元素 alert(item)將輸出為 ['a', 'aa', 'aaa'],['b', 'bb', 'bbb'],['c', 'cc', 'ccc']
$.each(arr, function(i, item){ $.each(item,function(j,val){alert(j);alert(val);}); }); alert(j)將輸出為0,1,2,0,1,2,0,1,2 //將會輸出每個數組的每個值 alert(val)將輸出為a,aa,aaa,b,bb,bbb,c,cc,ccc
實例:動態生成樹
后臺返回的是一個二維數組
<div class="wrapper wrapper-content animated fadeInRight"><div class="row"><div class="col-lg-12"><div class="ibox float-e-margins"><div class="ibox-content"><ul class="nav" id="menus"></ul><span id="liMsg"></span></div></div></div></div> </div>
<script type="text/javascript">$(document).ready(function () {jQuery.ajax({type:'POST',url: '/ZAdmin/MenuHandler.ashx',data: {action:'rootMenu'},dataType:'json',success: function (data) {if (data.Status == 200) {var htmlLi = "";$.each(data.Data, function (i, item) {htmlLi +='<li>';$.each(item, function (j, val) {if (j == 'menu_name') {htmlLi+='<a>' + val + '</a>';}});htmlLi+='</li>';$('#menus').html(htmlLi);});} else {$('#liMsg').text('異常');}},error: function (errorThrown) {jQuery('#liMessage').val('網絡通訊異常');return false;}})}); </script>
這塊遇到一個問題,由于我是動態拼數據,當我用append()時,不能追加到臨時變量上,試了很多方法,轉成jquery對象也不行
后來只能把動態生成的數據寫在臨時變量中然后用html()往里插入
?