javascript - 每次出现课程时包装内容 - 可能吗?
问题描述
每次向表单添加 li.gsection 时,我都想将我的 div 包裹在我的 li 标签周围。
是否可以像这样自动包装?我知道如何手动包装和 wrapAll,但这是完全不同的事情。
第三节课总是我的自定义课。我希望将其添加到包装器中,然后将 _comtainer 添加到其中。
这是一个奢侈的问题,但是。表单使用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>
表单使用ajax,即使我使用多部分表单也可以加载吗?一个包含多个页面的表单?
这将取决于这些部分是如何被分解的,但一般来说,假设您在将每个部分的列表插入 DOM 之后在每个部分的列表上运行它,它应该可以工作(跨越多个部分的子列表除外。)
推荐阅读
- c# - WPF 在选择开始下方放置 Intellisense(如 PopUp)
- c# - [FromQuery] 是否应用于复杂类型而不是传递 10 多个参数对于 GET 端点来说是个好主意?
- node.js - 反应创建问题
- ios - 将 Android 应用程序中的一项功能迁移到 iOS
- python-3.x - 如果将鼠标悬停在 Graphviz 标签上,它们会出现吗?
- swift - 如何为 watchOS 6 独立应用设计 Complications?
- sql - 如果两个表有一个相同的列来处理它们之间的关系,那么将列分开到不同的表中会更好吗?
- python - Removing the rows from dataframe till the actual column names are found
- php - How to display GIF's in laravel
- linux - Shell 脚本多个 if else 语句