2014-01-13 74 views
0

我有一個div返回數組字符串:jQuery的每JSON陣列

<div class="overview"><%=getCurrentAttribute('item','item_specs_json','""')%></div> 

數組的字符串,看起來像這樣:

[{"k":"type","v":"blue"},{"k":"size","v":"large"}] 

我做這些,有一個項目符號列表每頁有25個div.overview實例。
這可以工作,但只能重複每個div的第一項值。我無法得到這個循環。
是否可以用我所擁有的做到這一點?

$(function() { 
    var specs = $.parseJSON($(".overview").html()); 
    $("div.overview").html('<div class="bullet_spec"></div>'); 
    $.each(specs, function() { 
     $('div.overview div').append('<ul class="specs"><li class="label">' + this.k + ' : ' + this.v + '</li></ul>'); 
    }); 
}); 

我已經試過:

$('.overview').each(function() { 

,這打破了腳本。
也是FYI,當腳本打破唯一值出現在完整數組字符串格式正確的項目。

+1

它的工作原理,http://jsfiddle.net/LsAXD/1/ – undefined

回答

2

如果您有多個「概覽」元素,那麼您必須遍歷該列表。

$('.overview').each(function() { 
    var $overview = $(this), specs = $.parseJSON($overview.html()); 
    $overview.html('<div class="bullet_spec"></div>'); 
    $.each(specs, function() { 
    $overview.children('div').append('<ul class="specs"><li class="label">' + this.k + ' : ' + this.v + '</li></ul>'); 
    }); 
}); 
+0

謝謝,那是它! – SteveAustin

2

我正在「我在做這些項目符號列表,則每頁有25個實例」意味着有25 .overview,每個都有自己的存在JSON。您可以遍歷每個,每個JSON字符串映射到元素的集合,在最後追加的集合:

$('.overview').each(function(){ 
    var theJSON = JSON.parse(this.innerHTML); 
    $elems = $.map(theJSON, function(k,v){ 
    return $('<ul class="specs"><li class="label">' + k.k + ' : ' + k.v + '</li></ul>'); 
    }); 
    $spec = $('<div class="bullet_spec"></div>').append($elems); 
    $(this).html($spec); 
}); 

JSFiddle

+0

---------謝謝! – SteveAustin