当使用iron-router使用引用下一部分id的锚点按钮滚动到哈希时,例如:
<a class="button" href="{{pathFor 'home' hash='about'}}">
铁路由器在第一次点击按钮时愉快地带我们去约会区。
如果您使用鼠标向后滚动并再次单击相同的按钮,则不会进行滚动。
我认为这是因为目的地显然与当前的路由器位置相同,因此没有触发反应。
我如何强迫反应?
我已经尝试在覆盖scrollToHash函数的window.location中清除哈希:
Router._scrollToHash = function(hash) {
var section = $(hash);
if (section.length) {
var sectionTop = section.offset().top;
$("html, body").animate({
scrollTop: sectionTop
}, "slow");
}
window.location.hash = '';
};
这允许第二次点击但不会更多,这让我感到困惑。
答案 0 :(得分:1)
将window.location.hash设置为空格而不是空字符串:
Router._scrollToHash = function(hash) {
var section = $(hash);
if (section.length) {
var sectionTop = section.offset().top;
$("html, body").animate({
scrollTop: sectionTop
}, "slow");
}
window.location.hash = ' ';
};
也可能将其设置为不存在的哈希值。
除了可以从第二页激活菜单链接以将您带到哈希的封面外,还需要此包:
meteor add okgrow:iron-router-autoscroll
结合使用它涵盖了我所想过的每一个案例。