Twitter引导程序更改词缀偏移量

Fat*_*moo 9 jquery twitter-bootstrap

我有我想要'子导航'的网站.因此,当您滚动到部分时,其工具栏将粘贴在主工具栏下方.我有这个工作,但我无法在初始化后更改顶部偏移.文档说:

贴上("刷新")

将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();
    });
});
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的变化

                $(this).data('affix', {b: {options: {offset:{top: h}}}});
Run Code Online (Sandbox Code Playgroud)

包含:

                $(this).affix({offset: {top: h}});
Run Code Online (Sandbox Code Playgroud)

我无法改变偏移量.你如何改变词缀插件的偏移量?谢谢.

Fat*_*moo 20

我想到了.我没有动态更新偏移量,而是将偏移值更改为函数:

$(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}});
    });
});
Run Code Online (Sandbox Code Playgroud)

现在当一个部分由于dom操作或窗口重新调整大小而改变时,由于函数返回值的改变,偏移量会自动改变.

  • 你能提供使用的html,还是一个有效的例子?我试图将其用于我现有的代码,但我不知道.sec是什么. (2认同)