0

我有一个相当大的三层深菜单,由嵌套列表组成,如本例所示

<ul class="nav">
    <li><a href="#">1</a>
        <ul>
            <li><a href="#">2</a>
                <ul>
                    <li><a href="#">level 3</a></li>
                    <li><a href="#">level 3</a></li>
                    <li><a href="#">level 3</a></li>
                </ul>
            </li>
            <li><a href="#">2</a>
        </ul>
    </li>
</ul>

对于菜单,我只想使用两个级别,因此我想删除第三ul个级别并将一个类添加到它的(前)子级以进行样式设置。

这可以用 jQuery 完成吗?结果应该类似于:

<ul class="nav">
    <li><a href="#">1</a>
        <ul>
            <li><a href="#">2</a></li>
            <li class="third"><a href="#">level 3</a></li>
            <li class="third"><a href="#">level 3</a></li>
            <li class="third"><a href="#">level 3</a></li>
            <li><a href="#">2</a></li>
        </ul>
    </li>
</ul>

任何帮助表示赞赏!

4

3 回答 3

3

这应该这样做:

$('ul ul ul').each(function() {
    $(this).parent().after($(this).find('li').addClass('third'));
    $(this).remove();
});

对于每三级 UL 元素,在 UL 的父元素之后插入所有子 LI 元素,然后删除 UL 本身。

于 2009-12-13T14:36:17.133 回答
0
$('ul ul ul').each(function() {
  $(this).parent().after($(this).find('li').addClass('third'));
  if (!$(this).parents('.exception').length){
   $(this).remove();
  }
});
于 2009-12-13T21:45:46.017 回答
0
$('ul ul ul li').addClass('third').unwrap().each(function() {
    $(this).parent().after($(this))
})
于 2013-10-23T04:54:10.870 回答