67 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | ;(function ($, window, document, undefined) { | ||
|  |   'use strict'; | ||
|  | 
 | ||
|  |   Foundation.libs.accordion = { | ||
|  |     name : 'accordion', | ||
|  | 
 | ||
|  |     version : '5.4.7', | ||
|  | 
 | ||
|  |     settings : { | ||
|  |       content_class: 'content', | ||
|  |       active_class: 'active', | ||
|  |       multi_expand: false, | ||
|  |       toggleable: true, | ||
|  |       callback : function () {} | ||
|  |     }, | ||
|  | 
 | ||
|  |     init : function (scope, method, options) { | ||
|  |       this.bindings(method, options); | ||
|  |     }, | ||
|  | 
 | ||
|  |     events : function () { | ||
|  |       var self = this; | ||
|  |       var S = this.S; | ||
|  |       S(this.scope) | ||
|  |       .off('.fndtn.accordion') | ||
|  |       .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a', function (e) { | ||
|  |         var accordion = S(this).closest('[' + self.attr_name() + ']'), | ||
|  |             groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()), | ||
|  |             settings = accordion.data(self.attr_name(true) + '-init'), | ||
|  |             target = S('#' + this.href.split('#')[1]), | ||
|  |             aunts = $('> dd', accordion), | ||
|  |             siblings = aunts.children('.'+settings.content_class), | ||
|  |             active_content = siblings.filter('.' + settings.active_class); | ||
|  |         e.preventDefault(); | ||
|  | 
 | ||
|  |         if (accordion.attr(self.attr_name())) { | ||
|  |           siblings = siblings.add('[' + groupSelector + '] dd > .'+settings.content_class); | ||
|  |           aunts = aunts.add('[' + groupSelector + '] dd'); | ||
|  |         } | ||
|  | 
 | ||
|  |         if (settings.toggleable && target.is(active_content)) { | ||
|  |           target.parent('dd').toggleClass(settings.active_class, false); | ||
|  |           target.toggleClass(settings.active_class, false); | ||
|  |           settings.callback(target); | ||
|  |           target.triggerHandler('toggled', [accordion]); | ||
|  |           accordion.triggerHandler('toggled', [target]); | ||
|  |           return; | ||
|  |         } | ||
|  | 
 | ||
|  |         if (!settings.multi_expand) { | ||
|  |           siblings.removeClass(settings.active_class); | ||
|  |           aunts.removeClass(settings.active_class); | ||
|  |         } | ||
|  | 
 | ||
|  |         target.addClass(settings.active_class).parent().addClass(settings.active_class); | ||
|  |         settings.callback(target); | ||
|  |         target.triggerHandler('toggled', [accordion]); | ||
|  |         accordion.triggerHandler('toggled', [target]); | ||
|  |       }); | ||
|  |     }, | ||
|  | 
 | ||
|  |     off : function () {}, | ||
|  | 
 | ||
|  |     reflow : function () {} | ||
|  |   }; | ||
|  | }(jQuery, window, window.document)); |