【问题标题】:How to wrap all next elements until?如何包装所有下一个元素直到?
【发布时间】:2015-04-16 02:42:24
【问题描述】:

我有以下 html:

<div class="menuItem">Domů</div>
<div class="menuItem">O nás</div>
<div class="menuItem">Výzkum a vývoj</div>
<div class="submenuItem"><b>Aplikace aktivního gumového prášku</b>
</div>
<div class="submenuItem"><b>Odprašky</b>
</div>
<div class="submenuItem"><b>Guma</b>
</div>
<div class="submenuItem"><b>Zemědělství</b>
</div>
<div class="submenuItem"><b>Potravinářství</b>
</div>
<div class="menuItem">Projekční činnost</div>
<div class="menuItem">Realizace</div>
<div class="submenuItem"><b>realizace podstránka</b>
</div>
<div class="menuItem">Kontakty</div>

我想要实现的是将每个.menuItem 和接下来的所有.submenuItem 都用.menuSet 包装起来。不幸的是,下面的 js 包装了整个 sn-p 而不是上面定义的集合。

<div class="menuItem">Domů</div>
<div class="menuItem">O nás</div>
<div class="menuItem">Výzkum a vývoj</div>
<div class="submenuItem"><b>Aplikace aktivního gumového prášku</b>
</div>
<div class="submenuItem"><b>Odprašky</b>
</div>
<div class="submenuItem"><b>Guma</b>
</div>
<div class="submenuItem"><b>Zemědělství</b>
</div>
<div class="submenuItem"><b>Potravinářství</b>
</div>
<div class="menuItem">Projekční činnost</div>
<div class="menuItem">Realizace</div>
<div class="submenuItem"><b>realizace podstránka</b>
</div>
<div class="menuItem">Kontakty</div>

为了让我的意图更容易理解,我在下面发布了想要的结果:

$(".menuItem").nextUntil(".menuItem").andSelf().wrapAll("&lt;div class='menuSet'&gt;&lt;/div&gt;");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="menuSet">
  <div class="menuItem">Domů</div>
</div>
<div class="menuSet">
  <div class="menuItem">O nás</div>
</div>
<div class="menuSet">
  <div class="menuItem">Výzkum a vývoj</div>
  <div class="submenuItem"><b>Aplikace aktivního gumového prášku</b>
  </div>
  <div class="submenuItem"><b>Odprašky</b>
  </div>
  <div class="submenuItem"><b>Guma</b>
  </div>
  <div class="submenuItem"><b>Zemědělství</b>
  </div>
  <div class="submenuItem"><b>Potravinářství</b>
  </div>
</div>
<div class="menuSet">
  <div class="menuItem">Projekční činnost</div>
</div>
<div class="menuSet">
  <div class="menuItem">Realizace</div>
  <div class="submenuItem"><b>realizace podstránka</b>
  </div>
</div>
<div class="menuSet">
  <div class="menuItem">Kontakty</div>
</div>

【问题讨论】:

    标签: javascript jquery html wrapall


    【解决方案1】:

    当您选择所有 menuItem 的类而不是从那里过滤时,wrapAll 将包装您的整个集合。

    要解决这个问题,一种方法是使用 $.each() 并遍历 menuItems 并包装它们。

    $(".menuItem").each(function (index) {
        $(this).nextUntil(".menuItem").andSelf().wrapAll("<div class='menuSet'></div>");
    });
    

    JSFiddle Demo

    .

    【讨论】:

    • 考虑使用addBack() 而不是andSelf(),因为jq1.8 已经弃用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2011-06-27
    • 2010-11-07
    • 1970-01-01
    • 2013-09-11
    • 2011-05-27
    相关资源
    最近更新 更多