简体   繁体   English

单击第二个手风琴菜单时,关闭打开的手风琴菜单,引导

[英]close the opened accordion menu when second accordion menu is clicked, bootstrap

I have two icons on a mobile view for my site. 我在网站的移动视图上有两个图标。 One is search icon and the other one is menu icon. 一个是搜索图标,另一个是菜单图标。 Both are using bootstrap accordion to show and hide the search options and menu options. 两者都使用Bootstrap手风琴来显示和隐藏搜索选项和菜单选项。

Accordion is working as it is supposed to. 手风琴正在按预期的方式工作。

But the problem is when one menu is open and if you click on the second menu, they both stay opened. 但是问题是当一个菜单打开时,如果您单击第二个菜单,它们都会保持打开状态。 Ideally it should close the first menu if you click the second menu or vice versa. 理想情况下,如果您单击第二个菜单,则应该关闭第一个菜单,反之亦然。

Here is my code for two menus: 这是我的两个菜单代码:

<button class="mobile-search navbar-toggle col-sm-1" type="button" data-toggle="collapse" data-target="#nav-search">
            <span class="sr-only">Toggle navigation</span>
            <i class="fa fa-search"></i>
</button>

<button class="navbar-toggle mobile-menu col-sm-1" type="button" data-toggle="collapse" data-target="#channel-list-mobile">
            <span class="sr-only">Toggle navigation</span>
            <img alt="Channel List Icon" class="img-responsive" src="/Images/ui/channel-list.png">
</button>

And the search menu options goes like this ( just an example ) : 搜索菜单选项如下所示(仅作为示例):

<div class="collapse" id="nav-search">
<div class="row">
    <div class="col-xs-12">
        <div id="inline-search">
            <div class="search-type">
                <div class="row">
                    <label for="search-buy" class="radio-inline col-xs-6 inline-labels">
                        @Html.RadioButton("propertyType", 1, Shared.SearchCriteria.SaleProducts, new { id = "1" }) <span>Buy</span>
                    </label>
                    <label class="radio-inline rent-mobile col-xs-6 inline-labels">
                        @Html.RadioButton("propertyType", 0, !Shared.SearchCriteria.SaleProducts, new { id = "2" }) <span>Rent</span>
                    </label>
               </div>
          </div>
       </div>
    </div>
</div>

The menu options code: 菜单选项代码:

    <nav class="visible-xs collapse" id="mobile-nav-accordion">
        <div class="panel-group" id="mobile-menu">
            <div id="channel-list-mobile" class="panel-collapse collapse">
                <div class="panel-body">
                    <div class="panel panel-default">
                        <div class="panel-heading">
                            <h4 class="panel-title">
                               home
                            </h4>
                        </div>
                    </div>
                    <!--nested accordion-->
                    <div id="mobile-menu-list" class="panel panel-default">
                        <div class="panel-heading">
                            <h4 class="panel-title">
                                <a data-toggle="collapse" data-parent="#mobile-menu-list" href="#services-mobile">
                                    Services <i class="fa fa-caret-down pull-right"></i>
                                </a>
                            </h4>
                        </div>
                        <div id="services-mobile" class="panel-collapse collapse">
                            <div class="panel-body">
                                <ul class="mobile-nav">

                                        <li>
                                            <a href="@Url">test...</a>
                                        </li>

                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
</nav>

The above code is just to show the bootstrap structure i am using. 上面的代码只是为了展示我正在使用的引导程序结构。

So any idea on how to close the first menu if you click the second menu or vice versa?? 那么,如果您单击第二个菜单,反之亦然,如何关闭第一个菜单呢?

If i were you, i would try to merge the default accordion template with your existing code as there is alot of chunks missing from your code. 如果我是您,我会尝试将默认的手风琴模板与您的现有代码合并,因为您的代码中缺少很多块。

Also you should use both of these to control which tabs are open/closed 另外,您应同时使用这两个控件来控制打开/关闭哪些标签页

class="panel-collapse collapse">
class="panel-collapse collapse in">

Collapse in = Currently open 收起= 当前打开
Collapse = Closed 收起= 已关闭

Got it fixed using javascript. 使用JavaScript将其修复。

Added id's for the buttons: 为按钮添加了ID:

<button id="mobile-search-button" class="mobile-search navbar-toggle col-sm-1" type="button" data-toggle="collapse" data-target="#nav-search">
            <span class="sr-only">Toggle navigation</span>
            <i class="fa fa-search"></i>
</button>


<button id="mobile-menu-button" class="mobile-menu navbar-toggle col-sm-1" type="button" data-toggle="collapse" data-target="#channel-list-mobile">
            <span class="sr-only">Toggle navigation</span>
            <img alt="Channel List Icon" class="img-responsive" src="/Images/ui/channel-list.png">
</button>

And here is the javascript fix: 这是javascript修复程序:

var lastaccordion = null;
$('#mobile-search-button').click(function () {
    if (lastaccordion != null) {
        if (lastaccordion.attr('id') != 'nav-search') {
            lastaccordion.collapse('hide');
        }
    }
    lastaccordion = $('#nav-search');
});

$('#mobile-menu-button').click(function () {
    if (lastaccordion != null) {
        if (lastaccordion.attr('id') != 'channel-list-mobile') {
            lastaccordion.collapse('hide');
        }
    }
    lastaccordion = $('#channel-list-mobile');
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM