在.each循环jquery中增加索引值几次

Posted

技术标签:

【中文标题】在.each循环jquery中增加索引值几次【英文标题】:Increasing index value inside .each loop jquery several times 【发布时间】:2020-04-06 15:03:07 【问题描述】:

我看了很多关于这个的问题,但找不到答案..对不起,如果这是基本的东西,但我还在学习 JS。

我正在解析要提取到卡片上的 json 数据(连续 3 张卡片),问题是 .each 循环不保存 vas 在循环内增加的索引值(3 倍增量).. 是有什么方法可以存储索引值,以便在循环中以最终状态再次使用它..

代码:

.每个循环都带有缩短的卡片代码,

  $.each(weekno.slice(), function(i, data) 
      var ul_data = [
         '<div class="container">'+
            '<div class="flex-container">'+
              '<div class="card">'+
                    '<div class="card-image" style="background-image: url(https://picsum.photos/600/100)"></div>'+
                         '<div class="card-content">'+
            '<p>Week '+ weekno[i] +'</p>'+
            '<p>Week '+ content[i] +'</p>'+

                        '</div>'+
                    '</div>'+
                  '</div>'+

             '<div class="card">'+
                    '<div class="card-image" style="background-image: url(https://picsum.photos/600/100)"></div>'+
                         '<div class="card-content">'+
             '<p>Week '+ weekno[i+1] +'</p>'+
                '<p>Week '+ content[i+1] +'</p>'+

                        '</div>'+
                    '</div>'+
                  '</div>'+              

             '<div class="card">'+
                    '<div class="card-image" style="background-image: url(https://picsum.photos/600/100)"></div>'+
                         '<div class="card-content">'+
            '<p>Week '+ weekno[i+2] +'</p>'+
              '<p>Week '+ content[i+2] +'</p>'+
                         '</div>'+
                    '</div>'+
                  '</div>'+
              '</div>'
            '</div>'+];
$("#recentActivities").append(ul_data);

循环正确显示前 3 张卡片:

Card 1: Week No. 1,  Content 1 
Card 2: Week No. 2,  Content 2 
Card 3: Week No. 3, Content 3

然后开始重复:

Card 4: Week No. 2, Content 2 
Card 5: Week No. 3, Content 3 
Card 6: Week No. 4, Content 4

【问题讨论】:

能发一下json数据吗? json 是使用 $.ajax( url:url, realtime: true, dataType:"jsonp", 从 google sheet 中解析出来的 如果我能看到至少一部分 json 数据会更容易得出答案 我什至没有发布卡片的完整代码,但会尝试拿出演示数据来运行 这是一个演示数据jsfiddle.net/wtydLo3b/1 【参考方案1】:

问题出在这里:

您不必要地重复了card 元素。也就是说,您在每个容器中放置 3 卡。这就是为什么您会获得额外的卡片

您一定只关注循环的第一轮,这可能就是您放置ii+1i+2 的原因。

解决办法:

    ul_data 中删除多余的card 元素。 想出一种使用 CSS 将 3 个卡片放在同一行中的方法。您或许可以使用 CSS Grid System

顺便提一下Loops的知识。

希望这个答案有所帮助!

【讨论】:

谢谢,我是编程新手,这就是为什么大声笑...我想找到另一种方法来连续制作卡片...但是假设我想使用相同的代码...是有什么方法可以在再次循环之前多次更改循环内的索引值? 我已经尝试过网格,但它似乎不适用于循环.. 如果可能的话,请您帮忙 jsfiddle.net/wtydLo3b/1。【参考方案2】:

我建议您查看Handlebars,这非常适合您的情况。

在第一步中,您定义了一个 html 模板,然后您将其与一个 json 对象结合以生成您完成的 html 卡片。Html-Template 可以放在您的 index.html 中。

HTML 模板

    <script type="text/x-handlebars-template" id="card-template">
         #each data <!--Defines a loop throw the data passed into the template -->
          <div class="card">
              <div class="card-image" style="background-image: url(https://picsum.photos/600/100)"></div>
              <div class="card-content">
                <p>Week data.weekno</p> <!--Read the weeekno from the passed data-->
                <p>Week data.content</p><!--Same as above read the content-->
              </div>
          </div>
        /each <!--Close loop-->
    </script>

index.html

    <div class="container">
      <div class="flex-container" id="content-placeholder">
      </div>
    </div>

    <script>
        var source = $("#card-template").html();
        var template = Handlebars.compile(source);
        var data = 
          "data" : [
             weekno: 1, content: 'Week 1' ,
             weekno: 1, content: 'Week 1' ,
             weekno: 1, content: 'Week 1' 
          ]
        ;
        var html = template(data);
        $("#content-placeholder").html(html);
    </script>

我不知道你使用的是像 Bootstrap 还是 Matrilze 这样的框架。因为这将是您查看他们的 Grid-system

的另一种选择

【讨论】:

顺便说一句,这与我想要的演示数据完全相同 jsfiddle.net/wtydLo3b/1... 它非常简单,无需在 css 中进行迭代

以上是关于在.each循环jquery中增加索引值几次的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .each() 索引?

jquery如何循环出下列数据区间的个数?

jquery each 怎么获取当前操作元素的索引

jQuery批量修改Name值,批量增加name后缀,非each(不需要循环)

jquery数组封装使用方法分享(jquery数组遍历)

jquery中each遍历对象和数组