シンプルなマルチレベル アコーディオン プラグインがあります。それは私にとってほぼ完璧です。
(function(jQuery){
jQuery.fn.extend({
accordion: function() {
return this.each(function() {
var $ul = $(this);
if($ul.data('accordiated'))
return false;
$.each($ul.find('ul, li>div'), function(){
$(this).data('accordiated', true);
$(this).hide();
});
$.each($ul.find('a'), function(){
$(this).click(function(e){
activate(this);
return void(0);
});
});
var active = $('.active');
if(active){
activate(active, 'toggle');
$(active).parents().show();
}
function activate(el,effect){
$(el).parent('li').toggleClass('active').siblings().removeClass('active').children('ul, div').slideUp('fast');
$(el).siblings('ul, div')[(effect || 'slideToggle')]((!effect)?'fast':null);
}
});
}
});
})(jQuery);
完全なコード - http://jsfiddle.net/SKfax/
このコードを少し作り直そうとしていますが、成功していません。親の「li」ではなく、「a」要素内でのみ toggleClass('.active') および removeClass('.active') が必要です
PS: '.active' クラスは、現在開いているセクションの見出しにのみ適用されます。