Копирование определенных уровней из неупорядоченного списка?

Я начинающий программист и столкнулся со следующей проблемой: если у меня есть вложенный неупорядоченный список, как я могу скопировать только элементы до определенного уровня? Например, если я хочу уменьшить этот неупорядоченный список до первых двух уровней:

<ul>
  <li>A</li>
  <ul>
    <li>C<br>
    </li>
    <li>D<br>
    </li>
    <ul>
      <li>E<br>
      </li>
      <li>F<br>
      </li>
      <ul>
        <li>G<br>
        </li>
        <li>H<br>
        </li>
      </ul>
    </ul>
    <li>E<br>
    </li>
  </ul>
  <li>B</li>
</ul> 

в

<ul>
  <li>A</li>
  <ul>
    <li>C<br>
    </li>
    <li>D<br>
    </li>
    <li>E<br>
    </li>
  </ul>
  <li>B</li>
</ul>

Есть ли простой способ добиться этого?

3 ответа

Решение

Простая версия:

$('ul ul ul').remove();

jsFiddle Demo

Я также написал небольшую функцию, которая позволяет вам указать корневой элемент и уровень:

function reduce(root, selector, level) {
    var use = root;
    for (var i = 0; i <= level; i++) {
        use += ' ' + selector;
    }
    $(use).remove();
}

Используйте по телефону:

//if the lists are in an element with the id 'root', see Demo
reduce('#root', 'ul', 2);

JsFiddle Demo

Это должно быть что-то вроде $('ul ul ul').remove(), но вам лучше заключить его, например, в div с идентификатором или классом, чтобы вы могли выполнить локальную очистку $('div.twolvls ul ul ul').remove()

Если вы просто удаляете неупорядоченные списки 3-го уровня, вы можете использовать $(ul ul ul).remove(),

Другие вопросы по тегам