【发布时间】:2013-04-17 20:27:16
【问题描述】:
我有一个基本上看起来像这样的函数:
function scroll(scrollTop) {
$("body,html").animate({scrollTop: scrollTop});
}
在主干路由中,我尝试使用此功能滚动到页面上的某个位置,再次简化:
var Router = Backbone.Router.extend({
routes: {
"": "index",
"foo": "foo"
},
index: function () {
scroll(0);
},
foo: function () {
scroll($("#foo").offset().top);
}
});
这适用于页面加载(如果加载“/foo”)、手动调用函数或利用 pushState(相对于哈希片段)路由。
但是使用哈希片段路由,动画会失败。滚动位置仍然会发生变化,但会立即发生变化,没有动画。
有解决办法吗?
【问题讨论】:
-
您的路线是否有可能与您页面上元素的 id 相对应?
-
@Loamhoof 是的,除了滚动到 0 的
index路由之外,其他人实际上是通过 id 找到一个元素并滚动到它的offset().top(我编辑了有问题的代码以反映这一点)。但是简单地滚动到 0 也有同样的问题。
标签: jquery backbone.js jquery-animate hashchange