Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function ($) {
- $.widget('genius.accordion', {
- options: {
- //settings
- headerClassName: 'accordionHeader',
- headerActiveClassName: 'accordionHeader-active',
- contentClassName: 'accordionContent',
- collapseAll: true,
- speed: 700,
- //callbacks
- onAccordionOpen: null,
- onAccordionClose: null,
- onAllAccordionOpen: null,
- onAllAccordionClose: null
- },
- _create: function () {
- var self = this;
- var accordionHeaders = self.element.find('> li > .' + self.options.headerClassName);
- var accordionContents = self.element.find('> li > .' + self.options.contentClassName);
- accordionContents.hide();
- accordionHeaders.on('click', function (e) {
- var currentAccordionHeader = $(this);
- var currentAccordionContent = $(this).next('.' + self.options.contentClassName);
- if (!currentAccordionContent.is(':visible')) {
- if (self.options.collapseAll) {
- accordionContents.slideUp(self.options.speed, function () {
- if ($.isFunction(self.options.onAccordionClose)) {
- self.options.onAccordionClose.call(accordionHeaders);
- }
- });
- accordionHeaders.each(function () {
- $(this).parent('li').removeClass(self.options.headerActiveClassName);
- });
- currentAccordionHeader.parent('li').addClass(self.options.headerActiveClassName);
- }
- else {
- currentAccordionHeader.parent('li').addClass(self.options.headerActiveClassName);
- }
- currentAccordionContent.stop().slideDown(self.options.speed, function () {
- if ($.isFunction(self.options.onAccordionOpen)) {
- self.options.onAccordionOpen.call(currentAccordionHeader);
- }
- });
- }
- else {
- currentAccordionContent.stop().slideUp(self.options.speed, function () {
- if ($.isFunction(self.options.onAccordionClose)) {
- self.options.onAccordionClose.call(currentAccordionHeader);
- }
- if (!self.options.collaseAll) {
- accordionHeaders.each(function () {
- currentAccordionHeader.parent('li').removeClass(self.options.headerActiveClassName);
- });
- }
- });
- }
- });
- },
- _init: function () {
- var self = this;
- },
- _destroy: function () {
- var self = this;
- },
- openAll: function () {
- var self = this;
- var accordionContents = self.element.find('> li > .' + self.options.contentClassName);
- accordionContents.slideDown(self.options.speed, function () {
- if ($.isFunction(self.options.onAccordionOpen)) {
- self.options.onAccordionOpen.call($(this).prev('.' + self.options.headerClassName));
- }
- if ($.isFunction(self.options.onAllAccordionOpen)) {
- self.options.onAllAccordionOpen.call($(this).prev('.' + self.options.headerClassName));
- }
- });
- },
- closeAll: function () {
- var self = this;
- var accordionContents = self.element.find('> li > .' + self.options.contentClassName);
- accordionContents.slideUp(self.options.speed, function () {
- if ($.isFunction(self.options.onAccordionClose)) {
- self.options.onAccordionClose.call($(this).prev('.' + self.options.headerClassName));
- }
- if ($.isFunction(self.options.onAllAccordionClose)) {
- self.options.onAllAccordionClose.call($(this).prev('.' + self.options.headerClassName));
- }
- });
- }
- });
- })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment