首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jquery中显示/隐藏多个元素

如何在Jquery中显示/隐藏多个元素
EN

Stack Overflow用户
提问于 2011-11-08 22:38:06
回答 3查看 3.3K关注 0票数 2

我目前正在创建一种类型的菜单,它将包含子菜单,当选择一个菜单项时,将出现该特定菜单项的子菜单,并且任何其他打开的子菜单都将关闭。

每个菜单列表都是以内联方式显示的,因此它们彼此相邻,一行中有3个,子菜单将直接显示在横跨整个页面宽度的下方,并将菜单的其余部分向下推到页面中。

我遇到了麻烦,以至于当按下项目1时,只显示子菜单1,依此类推。当前,当按下任何项目时,将显示子菜单1。

下面是html。

代码语言:javascript
复制
<ul id="menu">
        <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>

<div class="sub-menu 1">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu 2">
        <ul>
            <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu 3">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>   




<ul id="menu">
    <li>Item 4</li>
    <li>Item 5</li>
    <li>Item 6</li>
</ul>

<div class="sub-menu 4">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu 5">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu 6">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

下面是jquery

代码语言:javascript
复制
$(document).ready(function(){
    $("#menu > li").toggle(
    function(){

             $("#buying-guide-homepage > li").animate({height:109},"slow");
             $(".sub-menu 1").slideDown("slow");

        },
        function(){

        $(".sub-menu 1").slideUp("slow");
        $("#buying-guide-homepage > li").animate({height:89},"slow");

        });
 });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-08 22:50:01

如果您像这样更改您的html:

代码语言:javascript
复制
<ul id="menu">
     <li id='sub-menu1'>Item 1</li>
    <li id='sub-menu2'>Item 2</li>
    <li id='sub-menu3'>Item 3</li>
</ul>

<div class="sub-menu1">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu2">
        <ul>
            <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu3">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>   




<ul id="menu">
    <li id='sub-menu4'>Item 4</li>
    <li id='sub-menu5'>Item 5</li>
    <li id='sub-menu6'>Item 6</li>
</ul>

<div class="sub-menu4">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu5">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

<div class="sub-menu6">
    <ul>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
        <li>Sub-menu item</li>
    </ul>
</div>

你可以这样做:

代码语言:javascript
复制
$('div[class^="sub-menu"]').hide();
$("#menu > li").click(function(event){
    var id = event.target.id;
    console.log(id);
    $('div[class^="sub-menu"]').hide();
    $('div[class="'+id+'"]').show();

});

小提琴在这里:http://jsfiddle.net/ZEKNM/

EDIT - UPDATE可在单击时隐藏显示的菜单

代码语言:javascript
复制
$('div[class^="sub-menu"]').hide();
$("#menu > li").click(function(event){
    var id = event.target.id;
    var div =  $('div[class="'+id+'"]');  
    if(div.is(':visible')){
       div.hide();
     }else{
       $('div[class^="sub-menu"]').hide();
       div.show();
      }

});

在此更新小提琴:http://jsfiddle.net/ZEKNM/1/

票数 1
EN

Stack Overflow用户

发布于 2011-11-08 22:46:43

我认为问题出在子菜单和数字之间的空格。如果您将代码更改为使用.sub-menu-1 .sub-menu-2等,我想您会发现它可以工作。

我认为是这样的原因是因为空格表示将第二个类应用于DOM中的对象。所以你的.sub-menu 1实际上是两个类,sub-menu1。你也可以只选择by .1,然后你就会得到合适的元素。如果您只尝试执行$(".sub-menu 1").html("CHANGED THE HTML");,您将不会看到任何变化。但是,如果您将其更改为$(".1").html("CHANGED");,或者将类名更改为sub-menu-1,然后执行$(".sub-menu-1").html("CHANGED"),它也可以工作。

票数 2
EN

Stack Overflow用户

发布于 2011-11-08 22:55:35

http://jsfiddle.net/dNcpJ/1/

可能有一种更好的方法来选择显示哪个菜单,我只是将顶级菜单的内部文本作为子菜单的ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8052060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档