2016-08-25 2 views
1

Рассмотрим следующий фрагмент jQuery кодаДобавление плюс/минус для начальной загрузки панели

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); 

выше код находится внутри $(document).ready(function(){});

разметка выглядит следующим образом:

<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> 

Это работает для каждого панели, кроме первой. Первая панель всегда будет открытой и вместо добавления плюса добавит минус. Первая панель имеет класс panel-collapse collapse in, который обеспечивает открытие панели при загрузке страницы.

Пожалуйста, обратите внимание, я вложенные панели, и это также хорошо работает для тех, кто тоже его только первая панель, которая вызывает у меня проблемы

Может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста.

+0

Опубликовать HTML-код слишком – ZimSystem

+0

@ZimSystem Я обновил свой OP – Code

ответ

0

Я попытался это, пожалуйста, обратитесь ниже код:

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 код:

$('#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"); 
}); 

Пожалуйста, обратитесь эту fiddle link для демонстрации.

+0

У этой проблемы будет такая же проблема. Если вы добавите класс 'in' в div с id' collapseTwo', результат будет таким же, как и то, с чем я столкнулся. Как я упоминал в своем OP, первая панель должна оставаться открытой при загрузке страницы, которую я не могу закрыть. Если первая панель закрыта, тогда мой код работает отлично. Но это одно из требований держать панель открытой – Code

+0

проверить эту обновленную скрипту: https://jsfiddle.net/adminsunil/gn0wgvt0/1/ –

Смежные вопросы