Динамическое изменение смещения в плагине аффикса

Я использую плагин аффикса начальной загрузки, чтобы сделать 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');
   }
    });

Я проверил с помощью инструментов разработчика, что смещение обновляется, но поведение прикрепленного элемента остается прежним (он остается прикрепленным к той же верхней позиции). Что еще мне нужно сделать, чтобы динамически обновлять верхнее значение смещения.


person Dania    schedule 25.03.2013    source источник
comment
Вот скрипт, который объясняет подобное поведение jsfiddle.net/fztdv/1 Когда нажата кнопка "Показать", значение смещения должно быть изменено.   -  person Dania    schedule 26.03.2013


Ответы (3)


Была аналогичная ситуация с новым сайтом, над которым я работаю (слайд-шоу над прикрепленной панелью навигации меняет высоту при изменении размера окна, оставляя прикрепленную панель навигации с неправильным смещением).

Ответ заключается в том, чтобы удалить данные аффикса из кеша данных jQuery, а затем удалить все классы, связанные с плагином аффикса, например:

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

Я обнаружил, что внизу https://github.com/twbs/bootstrap/issues/5870< /а>

person dcPages    schedule 06.06.2013

В соответствии с руководством вы можете передать в атрибуте данных функцию, которая возвращает значение смещения .

Если бы вы запустили JSFiddle с проблемой, кто-то, кто уже имел с ней дело, мог бы легко вам помочь.

person Marcin Skórzewski    schedule 25.03.2013
comment
Вот скрипт, который объясняет подобное поведение jsfiddle.net/fztdv/1 Когда нажата кнопка «Показать», значение смещения должно быть изменено. - person Dania; 26.03.2013

Посмотрите, помогает ли метод scrollspy('refresh'): http://twitter.github.com/bootstrap/javascript.html#scrollspy

.scrollspy('refresh')

При использовании scrollspy в сочетании с добавлением или удалением элементов из DOM вам нужно будет вызвать метод обновления следующим образом:

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

Удачи!

person David Taiaroa    schedule 25.03.2013
comment
Вот скрипт, который объясняет подобное поведение jsfiddle.net/fztdv/1 Когда нажата кнопка «Показать», значение смещения должно быть изменено. - person Dania; 26.03.2013
comment
Спасибо за jsfiddle, так проще представить проблему. Еще не решил. Посмотрите, поможет ли вам ответ на этот вопрос: stackoverflow.com/questions/11421408/ - person David Taiaroa; 27.03.2013
comment
Почему бы просто не: $('[data-spy="affix"]').scrollspy('refresh');? - person whiskeysierra; 28.06.2013