【问题标题】:open/close accordion for dynamic data jquery动态数据jquery的打开/关闭手风琴
【发布时间】:2022-01-05 15:20:00
【问题描述】:

我有动态数据,点击一些按钮打开手风琴然后关闭它。问题是当手风琴打开时,其他手风琴应该关闭。就我而言,手风琴打开并仅在单击同一个按钮时单击。当当前打开时如何关闭手风琴。它从“form-group-1”开始。 检查 html 是这样的:

<form name="filter" id="filter" class="filter-desktop">
    <div class="form-group">
        <button type="button" class="filtre-collapse activite accordion collapsed" data-toggle="collapse" data-target="#activity" data-parent="#filter" aria-expanded="false" aria-controls="activity">
            Secteurs  <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="activity"></i>
        </button>
        <span class="selected-slide"></span>
        <hr />

        <div id="activity" class="collapse">
            <fieldset>
                <div class="checkbox-option">
                    <label class="option"><span>Achats</span><input id="input-activity" type="radio" name="activity[]" value="165" /> </label>
                </div>
                
            </fieldset>
        </div>
    </div>

    <div class="form-group" id="form-group-1">
        <button
            type="button"
            class="filtre-collapse speciality accordion collapsed"
            data-toggle="collapse"
            data-target="#speciality"
            data-parent="#filter"
            aria-expanded="false"
            aria-controls="speciality"
            disabled="disabled"
            style="cursor: not-allowed; color: grey;"
        >
            Spécialités <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="speciality"></i>
        </button>

        <div id="speciality" class="collapse">
            <fieldset></fieldset>
        </div>
    </div>

    <div class="form-group" id="form-group-2">
        <button type="button" class="filtre-collapse contrat accordion collapsed" data-toggle="collapse" data-target="#contrat" data-parent="#filter" aria-expanded="false" aria-controls="contrat">
            Type de contrat <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="true" aria-controls="contrat"></i>
        </button>

        <div id="contrat" class="collapse">
            <fieldset>
                <div class="checkbox-option">
                    <label class="option"><span>CDD </span><input id="input-contrat" type="checkbox" name="contrat[]" value="8" /> </label>
                </div>
                <div class="checkbox-option">
                    <label class="option"><span>CDI </span><input id="input-contrat" type="checkbox" name="contrat[]" value="9" /> </label>
                </div>
            </fieldset>
        </div>
    </div>

    <div class="form-group" id="form-group-3">
        <button type="button" class="filtre-collapse region accordion collapsed" data-toggle="collapse" data-target="#region" data-parent="#filter" aria-expanded="false" aria-controls="region">
            Régions <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="region"></i>
        </button>

        <div id="region" class="collapse">
            <fieldset>
                <div class="checkbox-option">
                    <label class="option"><span>Paris </span> <input id="input-region" type="checkbox" name="region[]" value="10" /> </label>
                </div>
 
               
            </fieldset>
        </div>
    </div>

    <div class="form-group" id="form-group-4">
        <button type="button" class="filtre-collapse departement accordion collapsed" data-toggle="collapse" data-target="#departement" data-parent="#filter" aria-expanded="false" aria-controls="departement">
            Départements <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="departement"></i>
        </button>

        <div id="departement" class="collapse" style="">
            <fieldset>
                <div class="checkbox-option">
                    <label class="option"><span>Ain </span> <input id="input-departement" type="checkbox" name="departement[]" value="128" /> </label>
                </div>
                
            </fieldset>
        </div>
    </div>


</form>

<script>
jQuery("button.filtre-collapse").click(function () {
            
            if (jQuery(this).hasClass("collapsed")) {
                jQuery(this).find("i").removeClass();
                jQuery(this).find("i").addClass("fa fa-chevron-down");

            } else {

                jQuery(this).find("i").removeClass();
                jQuery(this).find("i").addClass("fa fa-chevron-right");
            }
        })
</script>

【问题讨论】:

    标签: javascript html jquery events bootstrap-accordion


    【解决方案1】:

    只需在按钮点击事件中添加 $(".collapse").removeClass("show");这一行即可。

    $("button.filtre-collapse").click(function () {
                $(".collapse").removeClass("show");
                if ($(this).hasClass("collapsed")) {
                    $(this).find("i").removeClass();
                    $(this).find("i").addClass("fa fa-chevron-down");
    
                } else {
    
                    $(this).find("i").removeClass();
                    $(this).find("i").addClass("fa fa-chevron-right");
                }
            })
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
    <form name="filter" id="filter" class="filter-desktop">
        <div class="form-group">
            <button type="button" class="filtre-collapse activite accordion collapsed" data-toggle="collapse" data-target="#activity" data-parent="#filter" aria-expanded="false" aria-controls="activity">
                Secteurs  <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="activity"></i>
            </button>
            <span class="selected-slide"></span>
            <hr />
    
            <div id="activity" class="collapse">
                <fieldset>
                    <div class="checkbox-option">
                        <label class="option"><span>Achats</span><input id="input-activity" type="radio" name="activity[]" value="165" /> </label>
                    </div>
                    
                </fieldset>
            </div>
        </div>
    
        <div class="form-group" id="form-group-1">
            <button
                type="button"
                class="filtre-collapse speciality accordion collapsed"
                data-toggle="collapse"
                data-target="#speciality"
                data-parent="#filter"
                aria-expanded="false"
                aria-controls="speciality"
                disabled="disabled"
                style="cursor: not-allowed; color: grey;"
            >
                Spécialités <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="speciality"></i>
            </button>
    
            <div id="speciality" class="collapse">
                <fieldset></fieldset>
            </div>
        </div>
    
        <div class="form-group" id="form-group-2">
            <button type="button" class="filtre-collapse contrat accordion collapsed" data-toggle="collapse" data-target="#contrat" data-parent="#filter" aria-expanded="false" aria-controls="contrat">
                Type de contrat <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="true" aria-controls="contrat"></i>
            </button>
    
            <div id="contrat" class="collapse">
                <fieldset>
                    <div class="checkbox-option">
                        <label class="option"><span>CDD </span><input id="input-contrat" type="checkbox" name="contrat[]" value="8" /> </label>
                    </div>
                    <div class="checkbox-option">
                        <label class="option"><span>CDI </span><input id="input-contrat" type="checkbox" name="contrat[]" value="9" /> </label>
                    </div>
                </fieldset>
            </div>
        </div>
    
        <div class="form-group" id="form-group-3">
            <button type="button" class="filtre-collapse region accordion collapsed" data-toggle="collapse" data-target="#region" data-parent="#filter" aria-expanded="false" aria-controls="region">
                Régions <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="region"></i>
            </button>
    
            <div id="region" class="collapse">
                <fieldset>
                    <div class="checkbox-option">
                        <label class="option"><span>Paris </span> <input id="input-region" type="checkbox" name="region[]" value="10" /> </label>
                    </div>
     
                   
                </fieldset>
            </div>
        </div>
    
        <div class="form-group" id="form-group-4">
            <button type="button" class="filtre-collapse departement accordion collapsed" data-toggle="collapse" data-target="#departement" data-parent="#filter" aria-expanded="false" aria-controls="departement">
                Départements <i class="fa fa-chevron-right" aria-hidden="true" aria-expanded="false" aria-controls="departement"></i>
            </button>
    
            <div id="departement" class="collapse" style="">
                <fieldset>
                    <div class="checkbox-option">
                        <label class="option"><span>Ain </span> <input id="input-departement" type="checkbox" name="departement[]" value="128" /> </label>
                    </div>
                    
                </fieldset>
            </div>
        </div>
    
    
    </form>

    【讨论】:

    • 手风琴关闭必须从专业开始,当我点击手风琴时,它会打开,另一次点击它会关闭,一个手风琴关闭另一个
    • 不应包括“sectors”手风琴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多