Turbolinks и Scrollspy

Я следовал этому руководству, чтобы дублировать меню из документов boostrap.

Кажется, все работает отлично, но как только в подменю щелкнут тег привязки, текущее подменю сворачивается. Прокрутка до следующего раздела подменю откроет резервную копию подменю, и оно снова будет работать правильно. Однако прокрутка обратно к щелкнутому тегу привязки снова приведет к сворачиванию подменю.

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


person tquill    schedule 20.05.2017    source источник


Ответы (1)


К сожалению, мне не удалось воспроизвести поведение, которое вы испытываете, поэтому, если у вас есть пример, которым вы можете поделиться, это поможет.

Возможно, вы столкнулись с ошибкой, связанной с тем, как Turbolinks обрабатывает якоря на одной странице. В настоящее время он перезагружает страницу, а затем прокручивает элемент, а не просто прокручивает его. Эта ошибка была отмечена в репозитории Turbolinks: https://github.com/turbolinks/turbolinks/issues/75. Одним из возможных решений является предотвращение перезагрузки страницы турбоссылками при кликах привязки на той же странице:

$(document).on('turbolinks:click', function (event) {
  if (event.target.getAttribute('href').charAt(0) === '#') {
    return event.preventDefault()
  }
})

Небольшой недостаток заключается в том, что это может вызвать проблемы с кнопкой «Назад». В противном случае вы можете поэкспериментировать с вызовом .scrollspy('refresh') для соответствующего выбора после загрузки страницы (см.: http://getbootstrap.com/javascript/#scrollspy-methods).

person Dom Christie    schedule 29.05.2017