jquery手风琴的不寻常效果

时间:2014-04-24 12:47:08

标签: javascript jquery accordion slideup

这是我的第一个问题,希望你能帮助我。

我在jQuery中使用多级手风琴,但我遇到了问题。当我打开"tab"时,它会打开 - 关闭 - 打开。

你知道我该如何解决这个问题吗?

我离开了示例代码:

http://jsfiddle.net/Wgdx7/2/

 (function(jQuery){
     jQuery.fn.extend({
         accordion: function() {       
            return this.each(function() {

                var $ul                     = $(this),
                    elementDataKey          = 'accordiated',
                    activeClassName         = 'active',
                    activationEffect        = 'slideToggle',
                    panelSelector           = 'ul, div',
                    activationEffectSpeed   = 'fast',
                    itemSelector            = 'li';

                if($ul.data(elementDataKey))
                    return false;

                $.each($ul.find('ul, li>div'), function(){
                    $(this).data(elementDataKey, true);
                    $(this).hide();
                });

                $.each($ul.find('a'), function(){
                    $(this).click(function(e){
                        activate(this, activationEffect);
                        return void(0);
                    });

                    $(this).bind('activate-node', function(){
                        $ul.find( panelSelector ).not($(this).parents()).not($(this).siblings()).slideUp( activationEffectSpeed );
                        activate(this,'slideDown');
                    });
                });

                var active = (location.hash)?$ul.find('a[href=' + location.hash + ']')[0]:$ul.find('li.current a')[0];

                if(active){
                    activate(active, false);
                }

                function activate(el,effect){

                    $(el).parent( itemSelector ).siblings().removeClass(activeClassName).find( panelSelector ).slideUp( activationEffectSpeed, function(){

                    $(el).siblings( panelSelector )[(effect || activationEffect)](((effect == "show")?activationEffectSpeed:false),function(){

                        if($(el).siblings( panelSelector ).is(':visible')){
                            $(el).parents( itemSelector ).not($ul.parents()).addClass(activeClassName);
                        } else {
                            $(el).parent( itemSelector ).removeClass(activeClassName);
                        }

                        if(effect == 'show'){
                            $(el).parents( itemSelector ).not($ul.parents()).addClass(activeClassName);
                        }

                        $(el).parents().show();

                    });
                        });

                }

            });
        }
    }); 
})(jQuery);

$('#accordion').accordion();

感谢。

1 个答案:

答案 0 :(得分:0)

当我将js文件放在外部源中时,它按预期工作

编辑:粘贴压缩的js文本也可以...