目标:
首先将元素包装在一组ul
容器中的第一个空div之前,然后对空li
s之间的元素执行相同操作。
空元素可以包含在容器中或删除。
问题:
如果我无法定位该类,如何将这些元素集包装在一组ul
容器中?
问题:
1)我可以使用的唯一变量是空li
,因为每个容器中都有不同数量的元素。
2)html不以空li
结尾。
HTML:
<div class="body">
<fieldset>
<ol>
<li>
<h6>Customer Details</h6>
</li>
<li>
<h6>Customer Details</h6>
</li>
包装上面的元素
<li> </li>
将下面的元素换行,直到下一个空li
<li>
<h6>Customer Details</h6>
</li>
<li>
<h6>Customer Details</h6>
</li>
<li>
<h6>Customer Details</h6>
</li>
<li> </li>
将下面的元素换行,直到下一个空li
<li>
<h6>Customer Details</h6>
</li>
<li>
<h6>Customer Details</h6>
</li>
<li>
<h6>Customer Details</h6>
</li>
<li>
<h6>Customer Details</h6>
</li>
</ol>
</fieldset>
</div>
答案 0 :(得分:3)
这完全未经测试,因为我在手机上,但如果有语法错误,我很乐意更新。它依赖于您能够选择/识别您提供的HTML的父级(假设您未能添加上面评论中引用的最终空分隔符)。
// Get the known parent to this mess of li elements
var knownParent = $(...);
// Give the empty li elements an identifying class
knownParent.find("li").filter(function(){ return $(this).html().match(/ /) !== null; }).addClass("_liDivider");
// Wrap everything between the dividers with a ul element
$.each(
$("._liDivider:not(:last-child)"), function() {
$(this)
.nextUntil("._liDivider")
.wrap("<ul></ul>");
}
);
// Now deal with the orphaned li elements before the first divider
knownParent.find("li:first-of-type").nextUntil("._liDivider").wrap("<ul></ul>");