从无序列表中复制某些级别?

时间:2012-04-06 16:36:56

标签: javascript jquery html dom-manipulation

我是初学程序员,我遇到了以下问题: 如果我有一个嵌套的无序列表,我怎么能只复制元素 到一定程度?例如,如果我想将这个无序列表减少到前两个级别:

<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 个答案:

答案 0 :(得分:1)

这应该类似于$('ul ul ul').remove(),但您最好将其括在例如带有ID或类的div中,以便您可以进行本地清除$('div.twolvls ul ul ul').remove()

答案 1 :(得分:1)

简单版本:

$('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

答案 2 :(得分:0)

如果您只是删除第3级无序列表,则可以使用$(ul ul ul).remove()