JQuery insertBefore () дублирующая вставка - PullRequest
0 голосов
/ 31 марта 2020

У меня есть следующая разметка:

<div class="mobile-menu">
  <ul>

    <li class="product">
      Link
      <ul>

        <li>Link</li>
        <li>Link</li>

        <li class="item-has-children">
          Link has submenu
          <ul>
            <li>submenu link</li>
            <li>submenu link</li>
          </ul>
        </li>
      </ul>
    </li>

  </ul>
</div>

То, что я пытаюсь сделать, это переместить подменю (li.item-has-children) как первый li элемент в .product. Итак, моя разметка выглядит так:

<div class="mobile-menu">
  <ul>

    <li class="product">
      Link
      <ul>

        <li class="item-has-children">
          Link has submenu
          <ul>
            <li>submenu link</li>
            <li>submenu link</li>
          </ul>
        </li>

        <li>Link</li>
        <li>Link</li>

      </ul>
    </li>

  </ul>
</div>

Мне удалось переместить элемент li наверх, но он дублируется. Как и в моей отрисованной разметке с моим JQuery ниже, это выглядит примерно так:

<div class="mobile-menu">
  <ul>

    <li class="product">
      Link
      <ul>

        <li>
          Link has submenu

          <ul>
            <li>submenu link</li>
            <li>submenu link</li>
            <li>
              <ul>
                <li>Link has submenu</li>
                <li>
                  <ul>
                    <li>submenu link</li>
                    <li>submenu link</li>
                  </ul>
                </li>
              </ul>
            </li>
          </ul>

        </li>

      </ul>
    </li>
  </ul>
</div>

Подменю в основном дублируют друг друга, и я думаю, что это связано с тем, как я использую insertBefore(). Я думаю, что он также нацелен на вложенные элементы li:

 $('.mobile-menu ul li.product ul li.item-has-children').insertBefore($('.mobile-menu ul > li.product ul:first-of-type li:first-child'));

Я просто хочу переместить li.item-has-children как первый элемент в li.product ul

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...