Twitter引导程序更改词缀偏移量
我有我想要’子导航’的网站。 因此,当您滚动到部分时,其工具栏将粘贴在主工具栏下方。 我有这个工作,但我无法在初始化后更改顶部偏移。 文档说:
贴上(“刷新”)
将affix与添加或删除DOM中的元素结合使用时,您需要调用refresh方法:
但是当我尝试这个时,我得到:
未捕获的TypeError:对象#没有方法’刷新’
这是我的代码:
$(function () { $('.sec-nav').addClass("affix-top"); var adjustNavs = function (first) { $('.sec-nav').each(function (){ var $p = $(this).closest('.sec'); var $$ = $p.prevAll('.sec'); console.log($$); var h = 0; $$.each(function () { h+=$(this).outerHeight();}); console.log(h); if (first) { $(this).affix({offset: {top: h}}); } else { $(this).data('affix', {b: {options: {offset:{top: h}}}}); console.log(this); $(this).affix('refresh') } }); } adjustNavs(true); $('.sec').bind('DOMSubtreeModified', function () { adjustNavs(); }); });
我尝试了不同的变化
$(this).data('affix', {b: {options: {offset:{top: h}}}});
包含:
$(this).affix({offset: {top: h}});
我无法改变偏移量。 你如何改变词缀插件的偏移量? 谢谢。
我想到了。 我没有动态更新偏移量,而是将偏移值更改为函数:
$(function () { $('.sec-nav').addClass("affix-top").each(function (){ var $self = $(this); var offsetFn = function () { var $p = $self.closest('.sec'); var $$ = $p.prevAll('.sec'); var h = 0; $$.each(function () { h+=$(this).outerHeight();}); return h; } $self.affix({offset: {top: offsetFn}}); }); });
现在当一个部分由于dom操作或窗口重新resize而改变时,由于函数返回值的改变,偏移量会自动改变。
我更简单地简化了Fatmuemoo的答案以获得更基本的案例:我的主页导航栏(默认引导程序#masthead)位于ID为#bg的大背景滑块下方。 滑块的高度随3 css断点而变化。 我们只是将#masthead的偏移量设置为等于滑块的高度。 简单!
$('header#masthead').affix({ //sticky header at bottom of bg offset: { top: function(){return $("#bg").outerHeight();} } });
怎么样:
$(window).off('.affix'); $("#ID_NAME") .removeClass("affix affix-top affix-bottom") .removeData("bs.affix"); $('#ID_NAME').affix({ offset: { top: OTHER_VALUE } });