javascript - 如何将子 uls 的所有 li 添加并切换到特定单击 li 下面的父 ul

标签 javascript jquery html css

致力于将嵌套菜单转换为移动菜单...我需要在点击时将每个下拉列表添加到父级下方并切换它们。

这是当前菜单标记,悬停时下拉菜单可见:

<ul class="navigation-menu">

    <li class="white-hover"><a ceid="rd-menu" class="nav-main-links" href="#">Category</a>
        <div class="drop">
            <div class="drop-holder">
                <div class="left-side-menu dividerLine">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
                <div class="right-side-menu">
                    <ul>
                <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </li>

    <li>....</li>
    <li>....</li>
    <li>....</li>
</ul>

不太确定如何解决这个问题。我认为我需要详细说明类似于以下内容的内容:

$(document).ready(function() 
 {
    $('ul.navigation-menu li').click(function(e) 
    { 
        $(this).find('li').each(function(){
            $(this).after( each child li );
        });
    });
});

如果有人能指出正确的方向,我将不胜感激。

最佳答案

只需在点击事件上切换样式(最初是在悬停时):

CSS:

/* before */
ul.navigation-menu li:hover {...}
ul.navigation-menu li:hover div.drop {...}

/* after */
ul.navigation-menu li.active {...}
ul.navigation-menu li.active div.drop {...}

JS:

$(document).ready(function() {
    $('.white-hover').click(function(e) {
        $(this).toggleClass('active');
    });
});

下面是稍作改进的演示:

$(document).ready(function() {
    $('.white-hover').click(function(e) {
        if (!$(this).hasClass('active')) {
            $('.active').removeClass('active');
        }
        $(this).toggleClass('active');
    });
});
ul.navigation-menu li {
    display: block;
    position: relative;
}

ul.navigation-menu li.active {
    display: block;
    background-color: #09b5c9;
}

ul.navigation-menu li div.drop {
    display: none;
} 

ul.navigation-menu li.active div.drop {
    display: block;
    position: absolute;
    width: 387px;
} 

.drop {
    background-color: #fff;
    width: 387px;
    padding-left: 23px;
    padding-right: 25px;
    left: 0px;
    z-index: 9999;
    border-top:4px solid #09b5c9;
    top:46px;
    padding-bottom: 25px;
    box-shadow: 1px 3px 4px 0 #888 !important;
    display: block;
    position: absolute;
    padding-top: 15px;
}

.drop-holder {
    width:387px;
    float: left;
}
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<ul class="navigation-menu">
    <li class="white-hover">
        <a ceid="rd-menu" class="nav-main-links" href="#">Category</a>
        <div class="drop">
            <div class="drop-holder">
                <div class="left-side-menu dividerLine">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
                <div class="right-side-menu">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </li>
    <li class="white-hover">
        <a ceid="rd-menu" class="nav-main-links" href="#">Category</a>
        <div class="drop">
            <div class="drop-holder">
                <div class="left-side-menu dividerLine">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
                <div class="right-side-menu">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </li>
    <li class="white-hover">
        <a ceid="rd-menu" class="nav-main-links" href="#">Category</a>
        <div class="drop">
            <div class="drop-holder">
                <div class="left-side-menu dividerLine">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
                <div class="right-side-menu">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </li>
    <li class="white-hover">
        <a ceid="rd-menu" class="nav-main-links" href="#">Category</a>
        <div class="drop">
            <div class="drop-holder">
                <div class="left-side-menu dividerLine">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
                <div class="right-side-menu">
                    <ul>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                        <li><a href="#">link</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </li>
</ul>

关于javascript - 如何将子 uls 的所有 li 添加并切换到特定单击 li 下面的父 ul,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663993/

相关文章:

javascript - 如何在流体布局中将一个 div 设置为位于另一个 div 下方的样式

javascript - 如何测试是否支持onpropertychange?

javascript - 将一条线附加到面积图 d3 中路径的末尾

javascript - 将 Iframe src 存储为变量

javascript - jQuery 基于滚动的淡入和淡出

jquery - 序列化表单在 jQuery 中不起作用

javascript - react 按钮下拉菜单

javascript - 从 jquery 中的事件中获取 elementId

javascript - 如何将查询的数据(通过帖子)放在我的 jquery 图表上?

javascript - 表单验证 ASP.NET 中的整个页面