简体   繁体   English

如果所有引导手风琴都打开,请检查并执行某些操作

[英]Check and do something if all bootstrap accordions are open

I have a bootstrap accordion and also a "open all" , "close all" button which works fine but what I am trying to do is when the accordions are all opened manually and not by the open all, close all button have the button change to "close all".我有一个引导手风琴和一个“全部打开”、“全部关闭”按钮,它工作正常,但我想要做的是当手风琴全部手动打开而不是全部打开时,关闭所有按钮改变按钮“关闭所有”。 is there a way to check if all the accordions are open so I can add the button functionality?有没有办法检查所有手风琴是否都打开,以便我可以添加按钮功能? I know you can use shown.bs.collapse and hidden.bs.collapse to see if an accordion is open but how would you check if ALL are open?我知道您可以使用shown.bs.collapse 和hidden.bs.collapse 来查看手风琴是否打开,但是您将如何检查是否全部打开?

<!-- panel -->
<div class="panel accordion-toggle" href="#panelOne" data-toggle="collapse">
    <div class="panel-heading">
        <div class="l-col-panel">
            <div class="panel-title__wrapper">
                <div class="accordion__text">
                    <!--panel title -->
                    <h3 class="title-3">Title</h3>
                </div>
            </div>
            <div class="accordion-toggle__angle-icon">
                <!-- angle icon -->
                <i class="accordion__angle fa fa-angle-down"></i>
            </div>
        </div>
        <!-- /.l-col-panel -->
    </div>
    <div id="panelOne" class="panel-collapse collapse">
        <div class="panel-body">

            <div class="panel-content">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, voluptate!</p>
            </div>
        </div>
    </div>
</div>
<!--end: panel -->

<!-- panel -->
<div class="panel accordion-toggle" href="#panelOne" data-toggle="collapse">
    <div class="panel-heading">
        <div class="l-col-panel">
            <div class="panel-title__wrapper">
                <div class="accordion__text">
                    <!--panel title -->
                    <h3 class="title-3">Title</h3>
                </div>
            </div>
            <div class="accordion-toggle__angle-icon">
                <!-- angle icon -->
                <i class="accordion__angle fa fa-angle-down"></i>
            </div>
        </div>
        <!-- /.l-col-panel -->
    </div>
    <div id="panelTwo" class="panel-collapse collapse">
        <div class="panel-body">

            <div class="panel-content">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, voluptate!</p>
            </div>
        </div>
    </div>
</div>
<!--end: panel -->

<!-- panel -->
<div class="panel accordion-toggle" href="#panelOne" data-toggle="collapse">
    <div class="panel-heading">
        <div class="l-col-panel">
            <div class="panel-title__wrapper">
                <div class="accordion__text">
                    <!--panel title -->
                    <h3 class="title-3">Title</h3>
                </div>
            </div>
            <div class="accordion-toggle__angle-icon">
                <!-- angle icon -->
                <i class="accordion__angle fa fa-angle-down"></i>
            </div>
        </div>
        <!-- /.l-col-panel -->
    </div>
    <div id="panelThree" class="panel-collapse collapse">
        <div class="panel-body">

            <div class="panel-content">
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, voluptate!</p>
            </div>
        </div>
    </div>
</div>
<!--end: panel -->

jQuery: jQuery:

  $('.panel-collapse').on('shown.bs.collapse', function () {
  console.log('OPEN')
});

$('.panel-collapse').on('hidden.bs.collapse', function () {
  console.log('CLOSED')
});

 $('#panelOne').on('shown.bs.collapse', function () { let itemsList = document.getElementsByClassName('panel-collapse'); let isOpen = []; for (let item of itemsList) { if (item.classList.contains('in')) { isOpen.push(true) } else { isOpen.push(false) } } let allOpen = !isOpen.includes(false) console.log(allOpen) })
 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> <title>Bootstrap 101 Template</title> <!-- Bootstrap --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <!-- panel --> <div class="panel accordion-toggle" href="#panelOne" data-toggle="collapse"> <div class="panel-heading"> <div class="l-col-panel"> <div class="panel-title__wrapper"> <div class="accordion__text"> <!--panel title --> <h3 class="title-3">Title</h3> </div> </div> <div class="accordion-toggle__angle-icon"> <!-- angle icon --> <i class="accordion__angle fa fa-angle-down"></i> </div> </div> <!-- /.l-col-panel --> </div> <div id="panelOne" class="panel-collapse collapse"> <div class="panel-body"> <div class="panel-content"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, voluptate!</p> </div> </div> </div> </div> <!--end: panel --> <!-- panel --> <div class="panel accordion-toggle" href="#panelTwo" data-toggle="collapse"> <div class="panel-heading"> <div class="l-col-panel"> <div class="panel-title__wrapper"> <div class="accordion__text"> <!--panel title --> <h3 class="title-3">Title</h3> </div> </div> <div class="accordion-toggle__angle-icon"> <!-- angle icon --> <i class="accordion__angle fa fa-angle-down"></i> </div> </div> <!-- /.l-col-panel --> </div> <div id="panelTwo" class="panel-collapse collapse"> <div class="panel-body"> <div class="panel-content"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, voluptate!</p> </div> </div> </div> </div> <!--end: panel --> <!-- panel --> <div class="panel accordion-toggle" href="#panelThree" data-toggle="collapse"> <div class="panel-heading"> <div class="l-col-panel"> <div class="panel-title__wrapper"> <div class="accordion__text"> <!--panel title --> <h3 class="title-3">Title</h3> </div> </div> <div class="accordion-toggle__angle-icon"> <!-- angle icon --> <i class="accordion__angle fa fa-angle-down"></i> </div> </div> <!-- /.l-col-panel --> </div> <div id="panelThree" class="panel-collapse collapse"> <div class="panel-body"> <div class="panel-content"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consectetur, voluptate!</p> </div> </div> </div> </div> <!--end: panel --> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script> </body> </html>

You can check if the class in is exist or not.您可以检查类in存在与否是。

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

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