【问题标题】:How to create <div> with several children in loop如何在循环中创建多个子元素的 <div>
【发布时间】:2017-06-22 00:19:32
【问题描述】:

我创建了一个类名为 div class= "postWindow"div

html:

<div class = "postWindow">
    <div class = "userName">Initial Name</div>
    <div class = "postTitle">Init title</div>
</div>

现在,我想要实现的是在一个 html 窗口中最多可以创建 10 个。 (最多因为帖子的数量可能在 1-10 之间变化,并且数量是动态的)

我尝试使用appendChild() 方法,但意识到它只填充了 div 作为新元素。它没有创建新的 postWindow

我的 .js 文件有以下功能:

function createPost(){
    var count = 0;
    while(count < upLimit){
         $.ajax({
            url: root + '/posts/'+curr,
            type: "GET",
            dataType: "JSON",
            success: function(response){
                 postJson = response;
                 //im lost here     
        }
   });
   count++;

}

使用 console.log 我的 Json 响应是这样的

0: Object
title: "First post"
body: "This is a post"
id: 1
userId: 27
.
.
.
100: //same format of data as object 0

任何帮助将不胜感激! :D

【问题讨论】:

  • $(".postWindow").parent().append("&lt;div class='postWindow'&gt;&lt;div class='userName'&gt;Initial Name&lt;/div&gt;&lt;div class='postTitle'&gt;Init title&lt;/div&gt;&lt;/div&gt;");
  • 您的 JSON response 看起来如何?将其添加到问题中会很有帮助。
  • 那么这些 postWindows 的父容器是什么?数据是什么样的?
  • 父容器就是
  • 看起来您的响应对象中有属性。像你猜的那样打电话给他们......response.titleresponse.body等。

标签: javascript jquery html json ajax


【解决方案1】:

这里有一个简单的小提琴来演示上述内容:https://jsfiddle.net/LLceoLwg/

HTML:

<div class="container">
  <div class = "postWindow">
    <div class = "userName">Initial Name</div>
    <div class = "postTitle">Init title</div>
  </div>
</div>

jQuery:

$(document).ready(function(){
    for(var i=0; i<10; i++){
      $(".postWindow").parent().append("<div class='postWindow'><div class='userName'>Initial Name</div><div class='postTitle'>Init title</div></div>");
    }               
});

【讨论】:

  • 你为什么不直接追加到父节点并通过如此复杂的路线?
  • 我的答案是根据 OP 的代码建模的,然后他显然更改了它。我没有看到任何关于为什么更改它的 cmets 这么我...我不得不同意,自从他更改了 OP 后,这看起来很奇怪
  • 是的,它有效,但这是一种愚蠢的编程方式。您可以轻松地将选择器更改为$(".container")。但是,如果您坚持让其正常工作就感到满意,那么我祝您在维护自己的代码方面做得最好。
  • 这很糟糕。每次调用append 都会触发 DOM 的重排,并且您希望使用最少的数量来提高性能。您应该将所有元素收集到一个数组中并附加一次。
  • 在循环中进行 ajax 调用更糟糕,tbh。但这并不是问题的真正重点。
猜你喜欢
相关资源
最近更新 更多
热门标签