Skip to content

Instantly share code, notes, and snippets.

@FabianSchmick
Last active December 13, 2018 13:17
Show Gist options
  • Save FabianSchmick/ed68af49068975600e0489942fba4260 to your computer and use it in GitHub Desktop.
Save FabianSchmick/ed68af49068975600e0489942fba4260 to your computer and use it in GitHub Desktop.
Collapsing with jQuery
<div id="collapse-group">
<div data-toggle="collapse" data-target="#jedi" data-group="#collapse-group">
<span>Jedi <i class="fa fa-angle-down"></i></span>
</div>
<div id="jedi" class="collapse">
<p>
May the force be with you
</p>
</div>
<!-- more collapse elements -->
</div>
[data-toggle="collapse"] {
cursor: pointer;
}
[data-toggle="collapse"] i {
float: right;
}
.collapse {
display: none;
}
$('[data-toggle="collapse"]').click(function () {
var el = $(this),
group = $(el).data('group');
var collapses = $(group).find('[data-toggle="collapse"]:not(.collapsed)').not(this);
$(collapses).each(function(i, collapse){
var target = $(collapse).attr('data-target');
$(target).slideToggle(500, function () {
hide(this, collapse);
});
});
var target = $(el).attr('data-target');
$(target).slideToggle(500, function () {
if ($(target).is(":visible")) {
show(this, el);
} else {
hide(this, el);
}
});
function show(target, el) {
$(target)
.removeClass('collapse')
.addClass('expand');
$(el)
.removeClass('collapsed')
.find('i')
.removeClass('fa-angle-down')
.addClass('fa-angle-up');
}
function hide(target, el) {
$(target)
.removeClass('expand')
.addClass('collapse');
$(el)
.addClass('collapsed')
.find('i')
.removeClass('fa-angle-up')
.addClass('fa-angle-down');
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment