0

我目前有一个标准的无序列表,它充当我的站点导航的手风琴菜单(这是我的完整标记)。我想为支持我将使用的新功能(css 3d 转换)的浏览器提供更增强的导航。为此,我需要稍微修改我的代码结构以匹配以下输出(即,将元素附加/克隆到结构中):

<!-- mp-menu -->
<nav id="mp-menu" class="mp-menu">
<div class="mp-level"> <!--NEW APPENDED ELEMENT-->
    <ul id="demo1" class="nav">
        <li>
            <a href="#">Devices</a>
            <div class="mp-level">
                <h2>Devices</h2> <!--NEW CLONED ELEMENT-->
                <a class="mp-back" href="#">back</a> <!--NEW APPENDED ELEMENT-->
                <ul>
                    <li><a href="#">Mobile Phones</a></li>
                    <li><a href="#">Televisions</a></li>
                    <li><a href="#">Cameras</a></li>
                </ul>
            </div>
        </li>
        <li>
            <a href="#">Magazines</a>
            <div class="mp-level">
                <h2>Magazines</h2> <!--NEW CLONED ELEMENT-->
                <a class="mp-back" href="#">back</a> <!--NEW APPENDED ELEMENT-->
                <ul>
                    <li><a href="#">National Geographic</a></li>
                    <li><a href="#">Scientific American</a></li>
                </ul>
            </div>
        </li>
</ul>
</div>
</nav>

如果可能的话,我想附加新元素,但这似乎无法正常工作:

$( "#mp-menu" ).append('<div class="mp-level">');

要将 1 级链接克隆到 H2 中,我尝试过但没有运气:

$( "#mp-menu ul li .mp-level" ).clone('<h2>Devices</h2>');
4

1 回答 1

1

.append()与字符串连接不同,您可以将字符串的位和片段添加到 dom 结构中。

对于第一部分,您可以使用.wrapInner()

$('#mp-menu').wrapInner('<div class="mp-level" />');

对于第二部分,使用下面的.prepend()

$( "#mp-menu ul li .mp-level" ).prepend(function(){
    return '<h2>' + $(this).prev().text()+ '</h2> <a class="mp-back" href="#">back</a>';
})

演示:小提琴

于 2013-10-23T10:07:40.720 回答