我有想要“子导航”的网站。因此,当您滚动到该部分时,其工具栏将粘贴在主工具栏下方。我已经完成了这项工作,但无法在初始化后更改顶部偏移量。文档说:



但是当我尝试这样做时,我得到:



这是我的代码:

$(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操作或窗口调整大小而改变部分时,由于函数返回值的改变,偏移量会自动改变。

关于jquery - Twitter bootstrap 更改词缀偏移量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12181136/

10-12 22:42