javascript - 单击 ul 后浏览器展开时,响应式菜单消失

标签 javascript jquery html

我正在尝试创建一个响应式菜单(从 youtube 复制)。当我调整浏览器大小时,它工作正常,但是当我展开浏览器时,我遇到了一个错误,在我单击“ul”标签后,菜单没有出现。我需要刷新页面才能显示。 这是我的代码。

<div class="main_nav">
    <div class="nav_wrapper">
        <div class="media_nav">
            <span id="menu">Menu</span>
        </div>
        <div class="menu_container">
            <ul>
                <li><a href="#">Menu 1</a></li>
                <li><a href="#">Menu 2</a></li>
                <li><a href="#">Menu 3</a></li>
                <li><a href="#">Menu 4</a></li>
                <li><a href="#">Menu 5</a></li>
                <li><a href="#">Menu 6</a></li>
                <li><a href="#">Menu 7</a></li>
            </ul>
        </div>
    </div>
</div>
<style type="text/css">
    .main_nav{
    width: 100%;
}
.nav_wrapper{
    width: 84%;
    margin: auto;
    padding: 15px 0;
    position: relative;
}
.menu_container{
    margin:0;
    padding: 10px;
}
.menu_container ul{
    float: right;
}
.menu_container ul li{
    list-style: none;
    float: left;
    padding: 0 10px;
}
.menu_container ul li a{
    text-transform: uppercase;
    text-decoration: none;
    color: #000;
}
.menu_container ul li a:hover{
    opacity: .7;
}

.media_nav{
    position: absolute;
    right: 0;
    display: none;
}
.media_nav span:hover{
    cursor: pointer;
}


/* my meida query starts here */

@media screen and (min-width: 500px) and (max-width: 987px) {
    .nav_wrapper ul{
        display: none;
    }
    .nav_wrapper ul li{
        float: none;
        padding: 5px;   
    }
    div.nav-expanded{
        display: block;
    }
    .media_nav{
        display: block;
    }
}

</style>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script> 
<script type="text/javascript">
    $(document).ready(function(){
        $("#menu").click(function(){
            $(".menu_container ul").slideToggle(400, function(){
                $(this).toggleClass("nav-expanded").css('display', '500');
            });
        });
    });
</script>

我怀疑我的jquery有问题。 单击事件后,我尝试展开它,但 float 到左侧的菜单没有显示,页面需要刷新。 希望你能帮我。谢谢!

最佳答案

您不需要 .css() 函数:

http://jsfiddle.net/94nx8sgu/

$(document).ready(function(){
    $("#menu").click(function(){
        $(".menu_container ul").slideToggle(400, function(){
            $(this).toggleClass("nav-expanded");
        });
    });
});

关于javascript - 单击 ul 后浏览器展开时,响应式菜单消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392754/

相关文章:

javascript - html css 或 php gd 库两个图像合并 Angular 到 Angular

javascript - 将 JavaScript 代码合并到一个函数中时,代码将无法工作

jquery - 错误 : Property 'draggable' does not exist on type 'JQuery<HTMLElement>'

javascript - iframe 上的事件更改 src

html - 如何维护符合Zurb Foundation 3框架的div

javascript - 添加产品后更新 Woocommerce 购物车 (jQuery)

javascript - ExtJS AOP 类似于dojo 中提供的吗?

php - JSONP 没有给出任何响应

javascript - 获取所有以 "hide"开头的元素

firefox 4 中的 jQuery 动画速度(平滑度)