Разбор JSON в неупорядоченном списке - PullRequest
1 голос
/ 11 июля 2011

Я анализирую файл JSON в неупорядоченном списке. проблема в том, что мне нужно разбить результаты на «ul», содержащие только 3 элемента. поэтому я хочу закрыть ul после 3 результатов, а затем снова открыть его.

вот мой код:

$.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')
        }

Надеюсь, это кому-нибудь пригодится. Спасибо Аарону Рэю за ответ, я видел последний, когда моя работа уже была закончена.

1 Ответ

1 голос
/ 11 июля 2011

Я лично не работал с этим плагином, но если вы уверены, что он у вас работает, я думаю, что проблема в этой части кода:

      $('<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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...