Turbolinks和Scrollspy

时间:2017-05-20 13:55:49

标签: ruby-on-rails turbolinks scrollspy

我跟着this tutorial复制了boostrap文档中的侧边菜单。

一切似乎都很好用,但是一旦从子菜单中点击锚标记,当前子菜单就会崩溃。滚动到下一个子菜单部分将打开子菜单备份,它将再次正常工作。但是,滚动回单击的锚标记会再次折叠子菜单。

我已经确认关闭涡轮锁将解决这个问题,但我希望在保持涡轮锁定的同时解决这个问题。

1 个答案:

答案 0 :(得分:1)

很遗憾,我无法重现您正在经历的行为,因此,如果您有一个例子,您可以分享,那就是帮助。

您可能遇到Turbolinks处理同页锚点的方式存在错误。它当前重新加载页面,然后滚动到元素,而不是只滚动到元素。 Turbolinks存储库中已经注意到了这个错误:https://github.com/turbolinks/turbolinks/issues/75。一种可能的解决方案是防止Turbolinks在同页锚点击上重新加载页面:

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

稍有不利的是,这可能会导致后退按钮问题。否则,您可能希望在页面加载后尝试在相关选择上调用.scrollspy('refresh')(请参阅:http://getbootstrap.com/javascript/#scrollspy-methods)。