Skip to content

Instantly share code, notes, and snippets.

@nicolas-brousse
Created February 23, 2012 10:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nicolas-brousse/1892224 to your computer and use it in GitHub Desktop.
Save nicolas-brousse/1892224 to your computer and use it in GitHub Desktop.
simpleAccordion - jQuery - plugin
<html>
<head>
<title>jQuery simple accordion</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.simpleAccordion.js"></script>
<script type="text/javascript">
$('.accordion').simpleAccordion();
</script>
</head>
<body>
<div class="accordion">
<h3><a href="#">Accordion 1</a></h3>
<div class="accordion_container active">
<p>
bla bla
</p>
</div>
<h3><a href="#">Accordion 2</a></h3>
<div class="accordion_container">
<p>
bla bla
</p>
</div>
<h3><a href="#">Accordion 3</a></h3>
<div class="accordion_container">
<p>
bla bla
</p>
</div>
</div>
</body>
</html>
(function($){
$.fn.simpleAccordion = function(options) {
var defaults = {
containers: ".accordion_container",
duration: 1000
};
var options = $.extend(defaults, options);
console.log(options);
return this.each(function() {
obj = $(this);
var body = obj.html();
$(this).find(options.containers).each(function(i) {
$(this).attr('data-default-height', $(this).outerHeight(true));
});
$(this).find(options.containers).not('.active').hide().css({ height : 0 });
$(this).find('h3 a').bind('click', function(e) {
$elt = $(this).parent().next();
if ($elt.not(":animated"))
{
if ($elt.is(":visible")) {
$elt.animate({
height: 0
}, {
queue: true,
duration: options.duration,
complete: function () {
$(this).hide().removeClass('active');
}
});
}
else {
$elt.show().animate({
height : $elt.data('default-height')
}, {
queue: true,
duration: options.duration,
complete: function () {
$(this).addClass('active');
}
});
}
}
e.preventDefault();
});
});
};
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment