J'ai une fonction qui ressemble essentiellement à ceci:Scrolling la fenêtre avec jquery ne parvient pas à animer lorsqu'elle est déclenchée par un hashchange dans Backbone
function scroll(scrollTop) {
$("body,html").animate({scrollTop: scrollTop});
}
et dans les voies Backbone, je suis en train d'utiliser cette fonction pour faire défiler à une position sur une page, de nouveau, simplifié:
var Router = Backbone.Router.extend({
routes: {
"": "index",
"foo": "foo"
},
index: function() {
scroll(0);
},
foo: function() {
scroll($("#foo").offset().top);
}
});
Cela fonctionne bien sur la charge de la page (si le chargement «/foo »), en appelant la fonction manuellement ou en utilisant pushState (par opposition au fragment de hachage) des itinéraires .
Mais en utilisant les voies de fragments de hachage, l'animation échoue. La position du défilement change toujours, mais instantanément, sans animation.
est-il une solution pour cela?
Est-il possible que vos itinéraires correspondent à l'identifiant des éléments de votre page? – Loamhoof
@Loamhoof oui, en dehors de la route 'index' qui défile à 0, les autres trouvent effectivement un élément par id top' (I modifié le code en question pour refléter cela) et le défilement à son' offset().. Mais le simple fait de faire défiler jusqu'à 0 a le même problème. – numbers1311407