1

ブートストラップ接辞プラグインを使用して、コンテンツを含む右隅の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');
   }
    });

開発者ツールからオフセットが更新されることを確認しましたが、貼り付けられた要素の動作は同じままです(同じ上部の位置に貼り付けられたままです)。オフセットトップ値を動的に更新するために他に何をする必要がありますか。

4

3 に答える 3

2

私が取り組んでいる新しいサイトでも同様の状況が発生しました(ウィンドウのサイズが変更されると、添付のナビゲーションバーの上のスライドショーの高さが変わり、添付のナビゲーションバーのオフセットが間違ったままになります)。

答えは、jQueryデータキャッシュから接辞データを削除してから、次のように接辞プラグインに関連付けられているクラスを削除することです。

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

https://github.com/twbs/bootstrap/issues/5870の下部にあることがわかりました

于 2013-06-06T04:48:12.347 に答える
0

scrollspy('refresh')メソッドが役立つかどうかを確認します:http ://twitter.github.com/bootstrap/javascript.html#scrollspy

.scrollspy('refresh')

DOMからの要素の追加または削除と組み合わせてscrollspyを使用する場合は、次のようにrefreshメソッドを呼び出す必要があります。

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

幸運を!

于 2013-03-25T11:31:01.680 に答える
0

マニュアルによると、オフセット値を返す関数をデータ属性に渡すことができます。

あなたがすでにそれを扱った誰かがあなたを簡単に助けることができる問題でJSFiddleを始めるならば。

于 2013-03-25T14:06:58.870 に答える