2016-08-25 3 views
1

das folgende Snippet jQuery Code BetrachtenHinzufügen von plus/minus Panel Bootstrap

function toggleIcon(e) { 
    $(e.target) 
    .prev('.panel-heading') 
    .find(".more-less") 
    .toggleClass('glyphicon-plus glyphicon-minus'); 
} 
$('.panel-group').on('hidden.bs.collapse', toggleIcon); 
$('.panel-group').on('shown.bs.collapse', toggleIcon); 

Der obige Code ist innerhalb $(document).ready(function(){});

das Markup wie folgt aussieht:

<div class="panel-group" id="collapse"> 
    <div class="panel panel-primary"> 
     <div class="panel-heading"> 
      <h4 class="panel-title"><a data-parent="#collapse" data-toggle="collapse" href="#collapse-one"><i class="more-less glyphicon glyphicon-plus"></i> Item Details 
      <span class="badge pull-right" id="itemdetails">0</span></a></h4> 
     </div> 
     <div class="panel-collapse collapse in" id="collapse-one"> 
      <div class="panel-body"> 
       @for (int i = 0; i < Model.MyList.Count; i++) { 
       <div class="panel panel-info"> 
        <div class="panel-heading"> 
         <h4 class="panel-title"><a data-toggle="collapse" 
         href="#@Model.MyList[i].Number"><i class="more-less glyphicon glyphicon-plus">@Model.MyList[i].Number, @Model.MyList[i].PropA, @Model.MyList[i].PropB</i></a></h4> 
        </div> 
        <div class="panel-collapse collapse" id="@Model.MyList[i].Number"> 
         <div class="panel-body"></div> 
        </div> 
       </div> 
      </div> 
     </div> 
     } 
    </div> 
</div> 

Das ist für jeden funktioniert Panel abgesehen von dem ersten. Das erste Panel ist immer offen und anstatt ein Plus hinzuzufügen, wird ein Minus hinzugefügt. Das erste Panel hat die Klasse panel-collapse collapse in, die sicherstellt, dass das Panel beim Laden der Seite geöffnet wird.

Bitte beachten Sie, ich habe Platten verschachtelt und das funktioniert auch auch für die, na ja, es ist nur die erste Platte, die mir Probleme

verursacht Kann mir jemand sagen, was ich falsch mache bitte.

+0

Geben Sie auch das entsprechende HTML ein – ZimSystem

+0

@ZimSystem Ich habe mein OP aktualisiert – Code

Antwort

0

habe ich versucht, dies unter Code Bitte beachten:

HTML:

<div class="panel-group" id="accordion"> 

    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
     <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo"> 
      Collapsible Group Item #2 
     </a><i class="indicator glyphicon glyphicon glyphicon-plus pull-right"></i> 
     </h4> 
    </div> 
    <div id="collapseTwo" class="panel-collapse collapse"> 
     <div class="panel-body"> 
     Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. 
     </div> 
    </div> 
    </div> 
    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
     <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseThree"> 
      Collapsible Group Item #3 
     </a><i class="indicator glyphicon glyphicon glyphicon-plus pull-right"></i> 
     </h4> 
    </div> 
    <div id="collapseThree" class="panel-collapse collapse"> 
     <div class="panel-body"> 
     Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. 
     </div> 
    </div> 
    </div> 
</div> 

JavaScript-Code:

$('#accordion').on('hidden.bs.collapse', function() { 
    //do something... 
}) 
$('#accordion .accordion-toggle').click(function (e) { 
    var chevState = $(e.target).siblings("i.indicator").toggleClass('glyphicon-minus glyphicon-plus'); 
    $("i.indicator").not(chevState).removeClass("glyphicon-minus").addClass("glyphicon-plus"); 
}); 

Bitte lesen Sie diese fiddle link für Demo.

+0

Dies wird das gleiche Problem haben. Wenn Sie die Klasse 'in' zum div mit der ID' collapseTwo' hinzufügen, dann ist das Ergebnis genau das Gleiche wie das, was mir bevorsteht. Wie ich in meinem OP erwähnt habe, muss das erste Panel beim Seitenladen offen bleiben. Ich kann es nicht geschlossen haben. Wenn das erste Panel geschlossen ist, funktioniert mein Code einwandfrei. Aber es ist eine der Anforderungen, um das Panel offen zu halten. – Code

+0

check this updated fiddle: https://jsfiddle.net/adminsunil/gn0wgvt0/1/ –