javascript - Jquery 追加同时包装每个 x 元素

标签 javascript jquery html

我正在尝试创建这样的 HTML:

<div class="container">
   <div class="wrap">
      <div class="el"></div>
      <div class="el"></div>
      <div class="el"></div>
   </div>
   <div class="wrap">
      <div class="el"></div>
      <div class="el"></div>
      <div class="el"></div>
   </div>
   <div class="wrap">
      <div class="el"></div>
      <div class="el"></div>
      <div class="el"></div>
   </div>
</div>

用于添加el的组件元素:

<input type="text" name="elements" />

el元素将根据输入中添加的数字附加到容器。每 3 个元素应包含在 wrap 中分区。

到目前为止我所拥有的:

$("input[name=elements]").on("keydown keyup", function() {
   var amount = parseInt($(this).val());
   for(i = 0; i < amount; i++) {
     $(".container").append('<div class="el"></div>');
   }
});

它添加了 el divs 但我不知道如何同时将每 3 个包装在 wrap 中。是否也可以删除 el div?如果说我首先输入 8然后我在输入中输入 3 ,将添加 11 个 div,而不是只有 3 个。换句话说,el 的数量HTML 中的 div 应始终等于输入值中的数字。每次输入类型时先清除 HTML 有意义吗?

最佳答案

您可以首先根据输入值的数量创建一个元素数组,将其附加到容器中,然后将每个第 n 个元素包装到 wrap 元素中。

const container = $('.container')

$("input").on('keyup', function() {
  const val = parseInt($(this).val()) || 0;
  const html = Array.from(Array(val), () => (
    $("<div>", {
      'class': 'el',
      'text': 'element'
    })
  ))

  container.html(html)

  for (let i = 0; i < val; i += 3) {
    container
      .find('.el')
      .slice(i, i + 3)
      .wrapAll("<div class='wrap'></div>");
  }
})
.wrap {
  border: 1px solid green;
  margin: 10px 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text">
<div class="container"></div>

关于javascript - Jquery 追加同时包装每个 x 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60651019/

相关文章:

html - 你能制作一个不包含固定宽度右侧边栏的流体宽度标题吗?

javascript - 如何在 jquery 对话框中初始化 Google map ?

javascript - 当所有复选框都被选中时添加一个类

jquery - 如何正确覆盖 "jQuery Unobtrusive Validation"以用于 css bootstrap?

javascript - 有垂直或水平滚动条吗?

javascript - 如何防止电子邮件地址的 css 自动断字

javascript - jQuery 平滑滚动链接颜色更改不起作用

javascript - 使用 Javascript 检索 Google Analytics 跟踪器名称时出现问题

javascript - 将在单击时删除特定单词的 jQuery 函数

jquery - 使用自定义设计的滚动条平滑滚动完整的网站