【问题标题】:onclick open sub menu, on click close sub menu?onclick 打开子菜单,点击关闭子菜单?
【发布时间】:2020-09-02 02:29:42
【问题描述】:

在此页面上http://kimcolemanprojects.com/ 我需要有一个下拉菜单,该菜单在单击时打开并在单击同一锚点时再次关闭。喜欢它在这个网站上工作http://angela-moore.co.uk/

到目前为止,这是我的菜单的 html:

<div class="left" id="nav">
<ul id="menu">
<li id="light">
<a href="lighting_video.html">Lighting + Video</a>
   <ul style="display: none;">
     <li><a href="django_django.html">Django Django</a></li>
     <li><a href="suntrap.html">Suntrap</a></li>
  </ul>
</li>
<li id="photo">
<a href="photograms.html">Photograms</a>
</li>
<li id="about">
<a class="active" href="about.html">About</a>
</li></ul>
</div><!--end nav-->

如您所见,我只需要它在一个列表项中工作。我需要为此编写 Javascript 的帮助。

因此,当在索引页面上,用户可以看到三个链接照明 + 视频、照片、关于。当用户点击照明 + 视频时,会在下方打开一个子菜单,其中包含更多链接。然后如果用户再次点击照明+视频,它将再次关闭。索引页面上的前三个链接中的每一个都可能发生同样的情况。

【问题讨论】:

    标签: javascript drop-down-menu onclick dom-events


    【解决方案1】:

    很简单..

    <script src="jquery.js"></script>
    <div id="navigation">
    <p><a href="#" id="toggle">Menu</a></p>
    <ul id="menu">
    
    
    
        <li><a href="/#" class="book-campaigns">Menu 1</a><ul>
            <li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li><li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li>
        </ul></li>
    
        <li><a href="/#" class="book-campaigns">Menu 2</a><ul>
            <li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li><li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li>
        </ul></li>
    
                <li><a href="/#" class="book-campaigns">Menu 3</a><ul>
            <li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li><li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li>
        </ul></li>
    
                <li><a href="/#" class="book-campaigns">Menu 4</a><ul>
            <li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li><li><a href="#"  class="lol">lol</a></li><li><a href="#"  class="lol">lol2</a></li>
        </ul></li>
    

    这将是您的 HTML 容器等,在此之下您将需要您的 javascript 来控制隐藏和更改!如果你觉得艺术,你也可以添加一些造型!

    <script>
    var showMenuText = $('#toggle').text();
    var hideMenuText = 'Close';
    
    $('#navigation ul').hide();
    $('#navigation ul a.active+ul').show();
    
    hideMenu = function() {
        $('#navigation ul#menu').hide();
        $('#navigation').removeClass('open');
        $('#toggle').text(showMenuText);
    }
    
    $('#toggle').click(function(event){
        event.stopPropagation(); event.preventDefault();
        $('#navigation ul#menu').toggle();
        $('#navigation').toggleClass('open');
        var toggleText = $('#toggle').text();
        (toggleText == showMenuText) ? $(this).text(hideMenuText) : $(this).text(showMenuText);
    });
    
    $('ul#menu > li > a').click(function(event){
        $this = $(this);
        if( $this.hasClass('page') ) parent.location = $this.attr('href');
        if( $this.hasClass('home') ) { parent.location = '/'; }
    
        event.preventDefault(); event.stopPropagation();
        if( $this.hasClass('active') ) var justclosed = true;
        $('a.active').removeClass('active').next('ul').hide();
        if(!justclosed) $this.addClass('active').next('ul').show();
    });
    
    </script>
    

    这是一个简单的 HTML 示例,您可以按照自己的喜好执行它。

    【讨论】:

    • 另外澄清一下,您在渲染结束时加载脚本,它可以提高您网站的性能,尽管在渲染之前总是需要一些 JS,因此请谨慎选择。
    猜你喜欢
    • 2015-09-09
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2023-01-10
    • 2017-01-20
    • 2018-03-14
    • 1970-01-01
    相关资源
    最近更新 更多