【问题标题】:How I can create multiple DIVs with ’append’ in jQuery?如何在 jQuery 中使用“追加”创建多个 DIV?
【发布时间】:2019-07-08 17:59:45
【问题描述】:

我想循环多个 DIV 元素。

有 5 本书。我想在 ID 中循环 5 本书:BootLoop

我尝试了什么?

my_orders.append(data[i].order.bname).appendTo("#bookLoop > div > div > div > h3");

my_orders.append(data[i].order.blink).appendTo("#bookLoop > div > div > div > a");

没有用。我在哪里做错了?

JS:

var my_orders = $("#bookLoop"); 
$.each(data, function(i, order) {
     $("#bookName").append(data[i].order.bname);,
     $("#bookURL").append(data[i].order.blink);
});

HTML(应该是循环的代码结构):

<div id="bookLoop">
   <div class="col-3">
      <div class="block-content">
        <div class="d-md-flex">
            <h3 id="bookName" class="h4 font-w700"></h3>
        <div>
        <div class="d-md-flex link">
           <a href="#" id="bookURL">Details</a>
        <div>
      <div>
   <div>
<div>

JSON:

[
   {"order":{"id":"61","bname":"Book 1","blink":984}},
   {"order":{"id":"42","bname":"Book 2","blink":5414}},
   {"order":{"id":"185","bname":"Book 3","blink":4521}},
   {"order":{"id":"62","bname":"Book 4","blink":41254}},
   {"order":{"id":"15","bname":"Book 5","blink":7464}}
]

【问题讨论】:

  • data[i].order.bname 你能举例说明这是什么吗?这是一个html节点吗?
  • 看起来你是在 jQuery 中做所有这些,或者?如果这真的是一个 jQuery 问题,请更新问题的标题和标签
  • 不清楚你想要的结果是什么。请显示 data 中的内容以及您希望 HTML 的外观。
  • append 用于添加 html 元素。听起来您想更新一些文本。使用.text() 而不是.append()
  • 这没有回答第二部分,即代码运行后“您希望 HTML 看起来像什么”。

标签: javascript for-loop append


【解决方案1】:

我认为您想要的是在#bookLoop 中附加每本书和链接,为每本书添加标题并链接到它自己的内容。

下面我为每本书创建元素(节点),然后将其附加到my_orders

看看它是否是您想要的,如果不是,请编辑您的问题,显示所需呈现的 HTML 的示例

var my_orders = $("#bookLoop"); 
var books = ''
var links = ''

let data = [
   {"order":{"id":"61","bname":"Book 1","blink":984}},
   {"order":{"id":"42","bname":"Book 2","blink":5414}},
   {"order":{"id":"185","bname":"Book 3","blink":4521}},
   {"order":{"id":"62","bname":"Book 4","blink":41254}},
   {"order":{"id":"15","bname":"Book 5","blink":7464}}
]

$.each(data, function(i, order) {
  let col = document.createElement('div')
  col.className = 'col-3'
  
  let content = document.createElement('div')
  content.className = 'block-content'
  
  let flexC = document.createElement('div')
  flexC.className = 'd-md-flex'
  
  let title = document.createElement('h3')
  title.className = 'h4 font-w700'
  title.textContent = data[i].order.bname;
  flexC.append(title)
  
  let flexL = document.createElement('div')
  flexL.className = 'd-md-flex link'
  
  let details = document.createElement('a')
  details.className = 'bookURL'
  details.href = "#"
  details.textContent = "Details: " + data[i].order.blink
  flexL.append(details)
  
  my_orders.append(col)
  col.append(content)
  content.append(flexC)
  content.append(flexL)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="bookLoop">   
<div>

【讨论】:

  • 伟大的工作。你是怎么这么快写代码的?逆天!但我有一个小问题。我没有为这个问题写一些 DIV 元素。我不希望代码结构看起来很拥挤。这是原代码PasteBin 可以按照原代码结构更新你的代码吗? - 如果你不想这样做,我理解 - 谢谢
  • 我每天都在使用动态数据来创建动态 html... 我不会为你编写代码,你已经有了我在这里制作的这段代码的基础。但是我建议你重新考虑你当前的结构,你真的需要嵌套 div 的深度吗?想想什么是动态的,什么不是,想想你想在哪里附加包含每本书的每个节点......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2021-07-04
相关资源
最近更新 更多