Добавьте каждый 10-й элемент в новый <ul>

0

У меня есть некоторый вклад от звонка json, который дает мне очень большой список из 30 брендов. Я хочу разделить список на три отдельные ul. Таким образом, каждая ul имеет 10 брендов.

У меня есть это:

HTML:

              <ul class="column_1">

              </ul>
              <ul class="column_2">

              </ul>
              <ul class="column_3">

              </ul>

Jquery:

          <script type="text/javascript">                           
            $.getJSON('http://link.to.brands/?format=json', function(data){
              var count = 1;
              $.each(data.brands, function(index, brand){
              $('<li><a href="'+brand.url+'" title="'+brand.title+'">'+brand.title+'</a></li>').appendTo('.block.third .column_'+count);
              count++
              });

            });
          </script>

Теперь первые три бренда помещаются в ul вместо блоков из 10. Так что я думаю, что мой подход ошибочен. Как мне это сделать. Некоторые объяснения более приветствуются!

  • 0
    Вы в основном там. Просто замените count++ на count = (count % 3) + 1 , чтобы после третьего столбца он снова возвращался к column_1 , вместо того, чтобы пытаться column_4 и так далее.
Теги:

3 ответа

0

Если вы хотите добавить в столбцы: 1, 2, 3, 1, 2, 3, 1, 2, 3,...

Если ты хочешь:

B1  | B2  | B3
B4  | B5  | B6
B7  | B8  | B9
B10 | B11 | B12
B13 | B14 | B15
B16 | B17 | B18
B19 | B20 | B21
B22 | B23 | B24
B25 | B26 | B27
B28 | B29 | B30

то вы в основном там: просто замените

count++

с

count = (count % 3) + 1 

Если вы хотите, чтобы первые 10 брендов вошли в столбец_1, следующие 10 в столбец_2,...

Кроме того, если вы хотите:

B1  | B11 | B21
B2  | B12 | B22
B3  | B13 | B23
B4  | B14 | B24
B5  | B15 | B25
B6  | B16 | B26
B7  | B17 | B27
B8  | B18 | B28
B9  | B19 | B29
B10 | B20 | B30

затем измените свой .appendTo на:

.appendTo('.block.third .column_' + (Math.floor(index / 10) + 1))

и вы можете полностью избавиться от переменной count.

  • 0
    Это именно то, что я ищу (второй). Тем не менее, ваш код не работает. У вас есть другое решение?
  • 0
    Что именно не работает? Рабочий пример здесь: jsfiddle.net/ZVd5X/3 ... Пожалуйста, опубликуйте свой HTML (интересно, если вы имели в виду .block.third.column_ вместо .block.third .column_ или что-то еще?
Показать ещё 2 комментария
0

Попробуйте что-то вроде этого

 <script type="text/javascript">
    $(document).ready(function () {

        var _licount = 30;
        var _liperul = _licount / 3;

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

            var str = '';
            for (var i = 0; i < _liperul; i++) {

                str += '<li>Hello</li>';
            }
            $(this).append(str);

        });


    });

</script>
0

Пытаться

$.getJSON('http://link.to.brands/?format=json', function (data) {
    $.each(data.brands, function (index, brand) {
        $('<li><a href="' + brand.url + '" title="' + brand.title + '">' + brand.title + '</a></li>').appendTo('.block.third .column_' + (Math.floor(index / 10) + 1));
    });
});
  • 0
    Я думаю, что вы имеете в виду по модулю ( % ) 10 в конце там
  • 0
    @ Дерик нет по модулю не так, потому что 5%10 даст 5 не 1, а 5/10 + 1) даст 1
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню