【问题标题】:Changing offset dynamically in affix plugin在词缀插件中动态更改偏移量
【发布时间】:2013-03-25 10:18:58
【问题描述】:

我正在使用引导词缀插件在右角幻灯片上制作一个带有内容的 div。我在窗口顶部有另一个部分,它将展开以打开另一个部分以显示一些详细信息。问题是,当展开 details 部分的 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');
   }
    });

我已经从开发人员工具中验证了偏移量得到了更新,但是附加元素的行为保持不变(它仍然被附加在相同的顶部位置)。我还需要做什么来动态更新偏移顶部值。

【问题讨论】:

  • 这是解释类似行为的小提琴jsfiddle.net/fztdv/1按下显示按钮时,必须更改偏移值。

标签: jquery jquery-plugins twitter-bootstrap affix


【解决方案1】:

我正在开发的一个新网站也遇到了类似的情况(在窗口调整大小时,附加导航栏上方的幻灯片会改变高度,从而使附加导航栏的偏移量错误)。

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

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

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

【讨论】:

    【解决方案2】:

    根据manual你可以传入data属性返回偏移值的函数。

    如果你想用 JSFiddle 来解决这个问题,那么已经处理过它的人可以很容易地帮助你。

    【讨论】:

    • 这里是解释类似行为的小提琴 jsfiddle.net/fztdv/1 当按下显示按钮时,偏移值必须改变。
    【解决方案3】:

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

    .scrollspy('refresh')
    

    当使用 scrollspy 并从 DOM 中添加或删除元素时,您需要像这样调用 refresh 方法:

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

    祝你好运!

    【讨论】:

    • 这里是解释类似行为的小提琴 jsfiddle.net/fztdv/1 当按下显示按钮时,偏移值必须改变。
    • 感谢 jsfiddle,它可以更轻松地描绘问题。还没解决。看看这个问题的答案是否对你有帮助:stackoverflow.com/questions/11421408/…
    • 为什么不直接:$('[data-spy="affix"]').scrollspy('refresh');
    猜你喜欢
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多