0

この例のように、ネストされたリストで構成される、かなり大きな3レベルの深さのメニューがあります。

<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>

メニューについては、2つのレベルのみで作業したいので、3つ目のレベルを削除し、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();
});

3番目のレベルの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 に答える