在我的应用程序中,我有两个jQuery函数:
第一个管理一个简单的slideToggle:
$( ".js-support-toggle" ).click(function(e) {
e.preventDefault();
$('.filter-weight').toggleClass('open');
$('.filter-weight .dropdown-body').slideToggle();
});
相应的标记:
<section class="dropdown filter-weight">
<a class="dropdown-title js-filter-toggle">Filter</a>
<div class="dropdown-body">
...
</div><!-- /dropdown-body-->
</section>
第二个使用Bootstrap Affix将辅助导航固定到页面顶部:
/* Affixes sidebar nav to top of screen */
$('#scrollspy').affix({
offset: {
top: function () {
return (this.top = $('.header-wrapper').outerHeight(true) + $('.filter-weight').outerHeight(true) + $('.secondary-navigation').outerHeight(true) + $('.filter-weight').outerHeight(true) + 100)
},
bottom: function () {
return (this.bottom = $('.footer').outerHeight(true))
}
}
})
通过收集附加菜单上方的每个元素的outerHeight()值来确定偏移量,包括我的slideToggled .filter-weight
元素。
当.filter-weight
元素折叠时,这一切都非常有效。但是,如果用户将其打开,然后向下滚动页面,则切换元素的添加高度会抛弃我的偏移计算。
如何重写offset()以动态调整到.filter-weight
元素的变量高度?