0

我正在尝试使 jquery 幻灯片菜单正常工作,但我现在没有想法。在子菜单条目上单击时如何停止菜单折叠?

到目前为止,这是我所掌握的 - js 部分、导航代码,最后是相关的 css 部分:

    <script type="text/javascript">
        $(document).ready(function() {
         $('ul .sub').hide();
         $("li:has(.sub)").click(function() {
            $("ul", this).toggle('slow');
        });
    </script>

    <nav id="nav" class="nav">
        <ul>
            <li class="current"><a href="#a">menu1</a></li>
            <li><a href="#b">menu2</a>
                <ul class="sub">
                    <li><a href="#ba">sub2a</a></li>
                    <li><a href="#bb">sub2b</a></li>
                    <li><a href="#bc">sub2c</a></li>
                </ul>
            </li>
            <li><a href="#c">menu3</a></li>
            <li><a href="#d">menu4</a>
                <ul class="sub">
                    <li><a href="#da">sub4a/a></li>
                        <li><a href="#db">sub4b</a></li>
                </ul>
            </li>
        </ul>
    </nav>

这是CSS:

 .nav li {
    list-style:none;
    line-height: 30px;  
 }

 .nav a:link, .nav a:visited{
    color:#333 !important;
    text-decoration:none;
 }

 .nav a:hover {
    color:#9bb710;
    text-decoration:none;
 }

 .current a:link, .current a:hover, .current a:visited {
    color:#9bb710 !important;
 }

 .sub {
    color:#333 !important;
    text-decoration:none;
    font-size: 14px;
    margin-left: 15px;
    line-height: 22px;
 }
4

3 回答 3

2

这是由于事件传播而发生的:当您单击子项时,“单击”事件会传播到容器“li”。

您可以通过添加以下内容来防止这种情况:

$("li").click(function(event) {
    event.stopPropagation();
});

这是一个 jsfiddle 示例:http: //jsfiddle.net/EWXPy/

于 2013-06-07T08:27:13.903 回答
1

您忘记了脚本中的右括号:

它必须是这样的:

<script type="text/javascript">
        $(document).ready(function() {
         $('ul .sub').hide();
         $("li:has(.sub)").click(function() {
            $("ul", this).toggle('slow');
        });
});
</script>
于 2013-06-07T08:24:39.783 回答
0
$("li:has(.sub)").click(function(e) {
    if ($(e.target).parents('.sub').length) return false;

    $("ul", this).toggle('slow');
});
于 2013-06-07T08:20:41.800 回答