Сброс/изменение смещения бутстрап-аффикса

Как изменить смещение Affix (Twitter Bootstrap 3) на другое значение?

Когда я пытался вызвать метод дважды, как это, второй, кажется, игнорируется и не имеет никакого эффекта:

$('#navbar-main').affix({ offset: 100});
$('#navbar-main').affix({ offset: 200}); // ---> the offset will not change to 200px

Сброс обратного вызова .affix перед вызовом affix второй раз не помогло:

$('#navbar-main').affix({ offset: 100});
$(window).off('.affix');
$('#navbar-main').affix({ offset: 200}); // ---> the offset will not change to 200px

Ответы

Ответ 1

Вот как. Ключ состоит в том, чтобы вызвать off на .affix, а также removeData на элемент affix'ed. Скажем, я хочу reset аффикс #navbar-main:

Bootstrap < 3 (из es128):

$(window).off('.affix')
$('#navbar-main').removeData('affix').removeClass('affix affix-top affix-bottom')
$('#navbar-main').affix({ offset: 400})

Bootstrap 3 (из Dysko):

$(window).off('.affix')
$('#navbar-main').removeData('bs.affix').removeClass('affix affix-top affix-bottom')
$('#navbar-main').affix({ offset: 400})

Ответ 2

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

поэтому, если вы просто пытаетесь обновить значение... вы можете сделать:

$('#navbar-main').data('bs.affix').options.offset = newOffset

надеюсь, что помогает < 3 жир