在affix插件中动态更改偏移量

时间:2013-03-25 10:18:58

标签: jquery jquery-plugins twitter-bootstrap affix

我正在使用bootstrap affix插件在内容的右上角滑动div。我在窗口顶部有另一个部分,它将展开以打开另一部分以显示一些细节。问题是,当扩展细节部分div时,必须更新附加div的偏移量。我做过类似的事情

    <div class="affixed-box" data-offset-top="160" data-spy="affix">

    $(".detail-btn").click(function(){
    if ($(".opened").length > 0) //The detail div is expanded
         { 
      $(".affixed-box").attr('data-offset-top','160'); 
    }

    else    
   { 
     $(".affixed-box").attr('data-offset-top','400');
   }
    });

我已从开发人员工具验证偏移量已更新,但附加元素的行为保持不变(它仍保留在同一顶部位置)。我还需要做些什么才能动态更新偏移顶部值。

3 个答案:

答案 0 :(得分:2)

与我正在处理的新网站有类似的情况(当窗口调整大小时,附加导航栏上方的幻灯片显示更改高度,使附加的导航栏具有错误的偏移)。

答案是从jQuery数据缓存中删除词缀数据,然后删除与词缀插件相关的任何类,如下所示:

$([selector]).removeData('affix').removeClass('affix affix-top affix-bottom');

我发现在https://github.com/twbs/bootstrap/issues/5870

的底部

答案 1 :(得分:0)

查看scrollspy('refresh')方法是否有帮助:http://twitter.github.com/bootstrap/javascript.html#scrollspy

.scrollspy('refresh')

当将scrollspy与从DOM中添加或删除元素结合使用时,您需要调用刷新方法,如下所示:

$('[data-spy="affix"]').each(function () {
var $spy = $(this).scrollspy('refresh')
});
祝你好运!

答案 2 :(得分:0)

根据manual,您可以在数据属性中传递返回偏移值的函数。

如果您想解决问题,那么已经处理过问题的人可以轻松帮助您。