2011-07-11 64 views
1

我正在解析無序列表中的json文件。 問題是我需要分頁的結果在「ul」只包含3項。 所以我想在3個結果後關閉ul,然後重新打開它。在無序列表中解析json

這裏是我的代碼:

$.getJSON('/it_IT/eni_nel_mondo/components/menu/comunicati.json', function(data) { 

      var list = []; 

      $.each(data.items, function(i, c) { 
      list.push('<li><a href="#"><div class="title"><div class="data"><span class="number">'+c.day+'</span><span class="month">'+c.month+'</span></div><h4>'+c.title+'</h4></div><p>'+c.abstract+'</p></a></li>'); 
      }); 

      $('<ul/>', { 
      'class': 'results', 
      html: list.join('') 
      }).appendTo('.wrap .items'); 
     }); 

任何幫助嗎?

我解決這樣的:

$.getJSON('/it_IT/eni_nel_mondo/components/menu/comunicati.json', function (data) { 
     var list = []; 
     var counter = 0; 
     $.each(data.items, function (i, c) { 
      counter++; 
      list.push('<li><a href="#"><div class="title"><div class="data"><span class="number">' + c.day + '</span><span class="month">' + c.month + '</span></div><h4>' + c.title + '</h4></div><p>' + c.abstract + '</p></a></li>'); 
      if (counter != 0 && counter % 3 == 0) { 
       $('<ul/>', { 
        'class': 'results', 
        html: list.join('') 
       }).appendTo('.wrap .items'); 
       list = []; 
      } 
     }); 
     if (counter % 3 != 0 && list.length > 0) { 
      $('<ul/>', { 
       'class': 'results', 
       html: list.join('') 
      }).appendTo('.wrap .items') 
     } 

我希望這可能是有用的人。 thnx給Aaron Ray的迴應,我已經看到了最後一個,當我的工作已經完成。

+0

因此,爲了澄清你想分頁ul沒有加載一個新的頁面正確?換句話說,如果您抓取30個項目,您希望在ul中一次顯示3個項目,並且有某種隱藏一個ul的下一個/上一個導航並打開下一個ul? –

+0

對! 我已經有一個管理uls的插件。 我的問題是在解析: 它解析1只ul,而我需要關閉它3個項目後,重新打開它..像這樣的循環 – junray

+0

它是一個自定義插件還是它是一個插件,你下載?難道你不能只創建1 ul,將所有的li添加到它,然後相應地隱藏/顯示li的? –

回答

1

我沒有親自使用該插件工作,但如果你有信心,你有工作,我認爲這個問題是與這部分代碼:

 $('<ul/>', { 
     'class': 'results', 
     html: list.join('') 
     }).appendTo('.wrap .items'); 

我假設你的列表中包含數組所有的數據,它不是一次只返回3個項目。所以list.join('')會將每一個項目轉儲到html中。你將不得不遍歷整個列表並使用模運算符來創建你的ul。然後將它們追加到容器(可能是您的可滾動項目容器)。

var html = "<ul>"; 
for(i = 0; i < list.length; i++) 
{ 
    if(i % 3 == 0 && i > 0) { 
     html += "</ul><ul>"; 
    } 
    html += "<li>" + jsonData + "</li">; 
} 
html += "</ul>"; 

$("#items").append(html); 
+0

thnx亞倫,我以另一種方式解決了這個問題,我已經看到了這一點,當我已經完成。無論如何thnx – junray