jQuery 切换菜单隐藏/显示(新菜单打开时关闭其他菜单)

发布于 2024-10-05 11:12:53 字数 1182 浏览 0 评论 0原文

感谢 Nick Craver 我有一个很好的切换菜单,但是我已经提出一个问题,如果用户继续单击新菜单,页面将继续增长,这是我不希望的,所以想法是:

当一个菜单打开时,所有当前打开的菜单都会关闭。

完整来源是@ http://the-dot.co.uk/new/

这是我正在使用的代码的两个片段。

<script type="text/javascript">
$(document).ready(function() {
$("ul li a").click(function() { $(this).parent().next().toggle("fast"); });
});
</script>

和html结构是

 <ul class="navigation">
    <li><a name="us" title="us">Us</a></li>
    <li id="us">about thedot</li>
    <li><a name="portfolio" title="portfolio">Portfolio</a></li>
    <li></li>
    <li><a name="contact" title="contact">Contact</a></li>
    <li id="contact">contact deets
    </li>
    <li><a name="twitter" title="twitter">Twitter</a></li>
    <li id="twit">some twitter shit</li>
    <li><a href="#">Blog</a></li>
  </ul>

谢谢。

thanks to Nick Craver I've got a nice toggle menu going, however i've come up with the problem that if users keep clicking new menus the page will keep growing which i dont want, so the idea is:

as one menu opens, any currently open menus to close.

The full source is @ http://the-dot.co.uk/new/

here are 2 snippets of the code I'm using.

<script type="text/javascript">
$(document).ready(function() {
$("ul li a").click(function() { $(this).parent().next().toggle("fast"); });
});
</script>

and html structure is

 <ul class="navigation">
    <li><a name="us" title="us">Us</a></li>
    <li id="us">about thedot</li>
    <li><a name="portfolio" title="portfolio">Portfolio</a></li>
    <li></li>
    <li><a name="contact" title="contact">Contact</a></li>
    <li id="contact">contact deets
    </li>
    <li><a name="twitter" title="twitter">Twitter</a></li>
    <li id="twit">some twitter shit</li>
    <li><a href="#">Blog</a></li>
  </ul>

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鸠书 2024-10-12 11:12:53

你可以这样做:

$(function() {
  $("ul li a").click(function() { 
      $(this).parent().next().toggle("fast").siblings("[id]").hide("fast");
  });
});

你可以在这里测试一下,它会切换什么兄弟

  • 仍然,但随后查看 .siblings() 具有 ID 属性和 .hide () 如果显示的话。

  • 如果标记没有锁定,您可以像这样进一步简化它:

    <ul class="navigation">
        <li class="toggle">Us</li>
        <li class="content">about thedot</li>
        <li class="toggle">Portfolio</li>
        <li class="content"></li>
        <li class="toggle">Contact</li>
        <li class="content">contact deets</li>
        <li class="toggle">Twitter</li>
        <li class="content">some twitter shit</li>
        <li><a href="#">Blog</a></li>
    </ul>
    

    和这样的脚本:

    $(function() {
      $("li.content").hide();
      $("ul.navigation").delegate("li.toggle", "click", function() { 
          $(this).next().toggle("fast").siblings(".content").hide("fast");
      });
    });
    

    这是一个偏好问题,但我发现这种方法更干净,更适合样式, 在此处查看结果

    You can do something like this:

    $(function() {
      $("ul li a").click(function() { 
          $(this).parent().next().toggle("fast").siblings("[id]").hide("fast");
      });
    });
    

    You can test it out here, what this does it toggle the sibling <li> still, but then looks at its .siblings() that have an ID attribute and .hide() them if show.


    If the markup isn't locked in, you could simplify it further like this:

    <ul class="navigation">
        <li class="toggle">Us</li>
        <li class="content">about thedot</li>
        <li class="toggle">Portfolio</li>
        <li class="content"></li>
        <li class="toggle">Contact</li>
        <li class="content">contact deets</li>
        <li class="toggle">Twitter</li>
        <li class="content">some twitter shit</li>
        <li><a href="#">Blog</a></li>
    </ul>
    

    And script like this:

    $(function() {
      $("li.content").hide();
      $("ul.navigation").delegate("li.toggle", "click", function() { 
          $(this).next().toggle("fast").siblings(".content").hide("fast");
      });
    });
    

    It's a matter of preference, but I find this approach a bit cleaner and more style-able, check out the result here.

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文