javascript - 每次出现类(class)时都会包装内容 - 可能吗?

标签 javascript jquery ajax

每次向表单添加 li.gsection 时,我都想将 div 包裹在 li 标签周围。

  1. 这样可以自动换行吗?我知道如何手动包装和包装所有,但这是完全不同的事情。

  2. 第三个类(class)始终是我的自定义类(class)。我希望将其添加到包装器中,然后将 _comtainer 添加到其中。

  3. 这是一个奢侈的问题但是。表单使用ajax,即使我使用多部分表单也可以加载吗?一个包含多个页面的表单?

我对这个网站有点迷茫和陌生,但如果我必须先做点什么,请告诉我。

凯文。

我的表单中有这个标记

<ul>
    <li class="gform gsection info random-class">Title</li>
    <li class="random-class">Name</li>
    <li class="random-class">Email</li>
    <li class="random-class">Phone</li>
    <li class="gform gsection more_info random-class">Title again</li>
    <li class="random-class">Something</li>
    <li class="random-class">Something</li>
    <li class="random-class">Something</li>
    <li class="gform gsection last_info random-class">Title again</li>
    <li class="random-class">Something</li>
    <li class="random-class">Something</li>
</ul>

我想要这个:

<ul>
    <ul class="section info_container">
        <li class="gform gsection info random-class">Title</li>
        <li class="random-class">Name</li>
        <li class="random-class">Email</li>
        <li class="random-class">Phone</li>
    </ul>
    <ul class="section more_info_container">
        <li class="gform gsection more_info random-class">Title again</li>
        <li class="random-class">Something</li>
        <li class="random-class">Something</li>
        <li class="random-class">Something</li>
    </ul>
    <ul class="section last_info_container">
        <li class="gform gsection last_info random-class">Title again</li>
        <li class="random-class">Something</li>
        <li class="random-class">Something</li>
    </ul>
</ul>

最佳答案

你最好用 CSS 来伪造这个:

li {
  list-style: circle;
  margin-left: 3em
}

li.gsection {
  list-style: disc;
  margin-left: 0
}
<ul>
  <li class="gform gsection info random-class">Title</li>
  <li class="random-class">Name</li>
  <li class="random-class">Email</li>
  <li class="random-class">Phone</li>
  <li class="gform gsection more_info random-class">Title again</li>
  <li class="random-class">Something</li>
  <li class="random-class">Something</li>
  <li class="random-class">Something</li>
  <li class="gform gsection last_info random-class">Title again</li>
  <li class="random-class">Something</li>
  <li class="random-class">Something</li>
</ul>

...但是如果您确实需要重构 DOM,这里有一种方法:它的工作原理是查找每个 .gsection 列表项的索引,向前扫描以查找下一个项的索引,并将该组包装在新的 ul 中。

var refactor = function(parent) {
  var lis = parent.find('li');
  for (var i = 0; i < lis.length; i++) {
    if ($(lis[i]).hasClass('gsection')) {
      // found a header, read the relevant classname:
      var headerClass = "";
      if ($(lis[i]).hasClass('info')) {
        headerClass = "info_container"
      } else if ($(lis[i]).hasClass('more_info')) {
        headerClass = "more_info_container"
      } else if ($(lis[i]).hasClass('last_info')) {
        headerClass = "last_info_container"
      }

      // scan ahead until we find the next header:
      var j = i+1;
      while (j < lis.length) {
        if ($(lis[j]).hasClass('gsection')) break;
        j++
      }
      lis.slice(i+1, j).wrapAll("<ul class='section "+headerClass+"'>");
      i = j-1; // no need to iterate over the elements we just scanned past
    }
  }
}

refactor($('ul'))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="gform gsection info random-class">Title</li>
  <li class="random-class">Name</li>
  <li class="random-class">Email</li>
  <li class="random-class">Phone</li>
  <li class="gform gsection more_info random-class">Title again</li>
  <li class="random-class">Something</li>
  <li class="random-class">Something</li>
  <li class="random-class">Something</li>
  <li class="gform gsection last_info random-class">Title again</li>
  <li class="random-class">Something</li>
  <li class="random-class">Something</li>
</ul>

The form uses ajax, can this be loaded even though I use a multipart form? A form with several pages in steps?

这将取决于这些部分的具体分解方式,但一般来说,假设您在将每个部分的列表插入 DOM 后对其运行此操作,它应该可以工作(跨越多个部分的子列表除外) .)

关于javascript - 每次出现类(class)时都会包装内容 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50818011/

相关文章:

javascript - Chrome/Firefox 中的 Ruby 时间转 JavaScript 日期

Javascript forEach - 如何循环一个对象?

javascript - 如何使用 react 中的删除按钮从列表中删除项目?

javascript - 在页面加载时创建文本框和插入数据

javascript - 基本 Javascript jquery json Html

php - 如何通过 Laravel 5.2 中的 ajax 请求将 Json 数组中的数据插入数据库

javascript - 使用 jQuery 按属性查找元素

javascript - 如何禁用指针事件,但允许拖动

ajax - 有人可以在 register.php 上发个帖子并注册 10 亿个帐户吗?

javascript - 如何通过 ajax 调用将数据添加到图表中?