我跟随this tutorial复制了引导程序文档中的侧边菜单。
一切似乎都很好用,但是一旦从子菜单中单击锚定标记,当前的子菜单就会折叠。滚动到下一个子菜单部分将打开子菜单备份,它将再次正常工作。但是,回滚到单击的锚点标记将再次折叠子菜单。
我已经确认关闭turbolinks可以解决这个问题,但我希望在保留turbolinks的同时解决这个问题。
发布于 2017-05-29 23:51:24
不幸的是,我无法重现你正在经历的行为,所以如果你有一个例子可以分享,那将是有帮助的。
您可能在Turbolinks处理同页锚点的方式上遇到了错误。它当前重新加载页面,然后滚动到元素,而不仅仅是滚动到元素。这个bug已经在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)。
https://stackoverflow.com/questions/44086730
复制相似问题