下载javascript问题

时间:2013-12-18 18:36:47

标签: javascript android jquery html css

Hello stackoverflow用户,

我似乎有一些问题试图让我的下拉菜单工作,我很确定这是我的JavaScript无法正常工作。截至目前,根据我所拥有的内容 - 点击<li>元素打开<ul>菜单并保持活动状态时,您需要点击<li>它关闭,活跃状态保持开启而不是像我需要的那样变得不活跃......所以我手边的问题是我哪里出错了?我仍然是javascript的新手,非常感谢任何帮助。

要求:

1。)点击激活并打开菜单

2。)再次单击元素或页面上的任何位置,菜单关闭并变为非活动状态。

这是我到目前为止所做的: DEMO

HTML:

<div class="top_l">
    <li>Nav <span>▼</span>

        <ul> <a href="#">Title</a>
 <a href="#">Title</a>
 <a href="#">Title</a>

        </ul>
    </li>
</div>

JS:

$(document).ready(function () {
    $('.top_l li').click(function () {
        $('.top_l li').addClass('active');
        $('.top_l li ul').slideToggle();
    });
});

CSS:

.top_l {
    width: 340px;
    height: 60px;
    float: left;
}
.top_l li {
    height: 32px;
    padding: 8px 12px 0 12px;
    margin: 10px 0 0 6px;
    border: 1px solid transparent;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border-radius: 4px;
    float: left;
    -moz-transition: all .3s ease;
    -webkit-transition: all .3s ease;
    -ms-transition: all .3s ease;
    transition: all .3s ease;
    list-style: none;
    color: #A4A4A4;
    font: 20px Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-variant: small-caps;
    text-shadow: 2px 2px 3px #000;
    position: relative;
    cursor: pointer;
}
.top_l li span {
    font: 14px Arial, Helvetica, sans-serif;
}
.top_l li:hover, .top_l li.active {
    color: #FFF;
    border: 1px solid #444;
}
.top_l li ul {
    width: 120px;
    height: 120px;
    background: #222;
    border: 1px solid #444;
    -moz-box-shadow: inset 0 0.1em 0.4em 0.1em #000;
    -webkit-box-shadow: inset 0 0.1em 0.4em 0.1em #000;
    box-shadow: inset 0 0.1em 0.4em 0.1em #000;
    display: none;
    position: absolute;
    top: 22px;
    left: 4px;
}
.top_l li ul a {
    width: 118px;
    height: 28px;
    padding: 10px 0 0 0;
    background: red;
    float: left;
    color: #FFF;
    font: 14px Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-variant: small-caps;
    text-shadow: 1px 1px 1px #000, -2px -2px 2px #000;
}

1 个答案:

答案 0 :(得分:1)

您永远不会在第二次点击时删除该课程。

检查.hasClass()是否有效,如果是,请使用.removeClass()将其删除。

$('.top_l li').click(function () {
    if($(this).hasClass('active')) {
        $(this).removeClass('active');
    } else {
        $(this).addClass('active');
    }
    $('.top_l li ul').slideToggle();
});

修改

请求的第二部分,用于在单击页面上的任意位置时关闭列表。试试这个:

$(document).ready(function () {
    $('.top_l ul').click(function (e) {
        $('.top_l ul').addClass('active');
        $('.top_l ul li').slideToggle();
    });

    $(document).click(function() {
        $('.top_l ul li').slideUp();
    });

    $('.top_l ul,.top_l li').click(function(e) {
        e.stopPropagation();
    });
});