jQuery手风琴

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

                var $ul = $(this);

                if($ul.data('accordiated'))
                    return false;

                $.each($ul.find('ul'), function(){
                    $(this).data('accordiated', true);
                    $(this).hide();
                });

                $.each($ul.find('a'), function(){
                    $(this).click(function(e){
                        //if(!$(this).hasClass('Active')) {
                            activate(this);
                            return void(0);
                        //}
                    });
                });

                var active = $('.Active');

                if(active){
                    activate(active, 'toggle');
                    $(active).parents().show();
                }

                function activate(el,effect){
                    if (!effect) {
                      $(el)
                       .toggleClass('Active')
                       .parent('li')
                       .siblings()
                       .find('a')
                       .removeClass('Active')
                       .parent('li')
                       .children('ul')
                       .slideUp('fast');
                    }
                  $(el)
                  .siblings('ul')[(effect || 'slideToggle')]((!effect)?'fast':null);
                }

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


呼叫手风琴

$('.Menu.Open').accordion();


问题

.Menu.Open位于.SideNav的内部,在折叠/扩展内容以设置.Main的高度后,我想获得新的高度。

我一直在研究计时器和定时事件,但是在手风琴扩展后感觉到我的尝试是完全错误的,我只是无法使它正常工作,我不希望将它们全部淹没在这个页面上!

最佳答案

查看您的代码,您依靠Jquery.slideUp / slideDown来扩展/折叠手风琴。如果我对您的理解正确,则您尝试在动画制作完成后测量高度。我相信这就是您要寻找的

$('element').slideUp('fast', function(){ perform_measurement_here();});


另外,供您参考

http://api.jquery.com/slideup/

09-27 01:17
查看更多