JQuery Accordion
(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);
调用 Accordion
$('.Menu.Open').accordion();
问题
.Menu.Open 位于 .SideNav 内部,我想在 Accordion 折叠/展开内容后获取新高度以设置 .Main 的高度
我一直在研究计时器和定时事件,但是在我的 Accordion 展开后我无法让它工作,并且感觉我的尝试完全错误,我不想用它们全部淹没这个页面!
最佳答案
查看您的代码,您依靠 Jquery.slideUp/slideDown 来展开/折叠您的 Accordion 。如果我理解正确的话,你正在尝试在动画完成后测量高度。我相信这就是您正在寻找的
$('element').slideUp('fast', function(){ perform_measurement_here();});
另外,供大家引用
关于javascript - Accordion 扩展后获得新高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102628/