JSFiddle - React, Tailwind, and code Playground
by Dan Daniel
HTML
<script src=" https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div class="panel panel-success">
<div data-toggle="collapse" data-target="#panel1" class="panel-heading collapsed">
<h4 class="panel-title">
<a> Panel 1 </a>
</h4>
</div>
<div id="panel1" class="panel-collapse collapse">
<div class="panel-body"></div>
</div>
</div>
<div class="panel panel-warning">
<div data-toggle="collapse" data-target="#panel2" class="panel-heading collapsed">
<h4 class="panel-title">
<a> Panel 2 </a>
</h4>
</div>
<div id="panel2" class="panel-collapse collapse">
<div class="panel-body"></div>
</div>
</div>
<div class="panel panel-danger">
<div data-toggle="collapse" data-target="#panel3" class="panel-heading collapsed">
<h4 class="panel-title">
<a> Panel 3 </a>
</h4>
</div>
<div id="panel3" class="panel-collapse collapse">
<div class="panel-body"></div>
</div>
</div>
CSS
.panel {
border: 1px solid black;
}
JavaScript
$(function () {
// save open tabs in comma separated var
var openPanels;
if (typeof $.cookie('activePanelGroup') !== 'undefined') {
openPanels = $.cookie('activePanelGroup').split(",");
openPanels.forEach(function (entry) {
$("#" + entry).addClass("in");
});
}
$(".panel .panel-collapse").on('shown.bs.collapse', function () {
var active = $(this).attr('id');
// add to cookie when opened
if (typeof $.cookie('activePanelGroup') !== 'undefined') {
$.cookie('activePanelGroup', $.cookie('activePanelGroup') + ',' + active);
} else {
$.cookie('activePanelGroup', active);
}
});
$(".panel .panel-collapse").on('hidden.bs.collapse', function () {
var closed = $(this).attr('id');
// delete from cookie when closed
$.cookie('activePanelGroup', $.cookie('activePanelGroup').replace(closed, ""));
// remove ',,' is found
$.cookie('activePanelGroup', $.cookie('activePanelGroup').replace(",,", ""));
});
});