J'ai mis en place un panneau coulissant sur mon site web.
Une fois l'animation terminée, j'ai défini le hash de la manière suivante :
function() {
window.location.hash = id;
}
(c'est un rappel, et l'id
est attribué auparavant).
Cela fonctionne bien, permettant à l'utilisateur de mettre en signet le panneau, et aussi pour que la version sans JavaScript fonctionne.
Cependant, lorsque je mets à jour le hash, le navigateur se déplace vers l'emplacement. Je suppose que c'est le comportement attendu.
Ma question est : comment puis-je empêcher cela ? C'est-à-dire, comment puis-je changer le hash de la fenêtre, mais ne pas faire défiler le navigateur jusqu'à l'élément si le hash existe ? Une sorte de event.preventDefault()
quelque chose comme ça ?
J'utilise jQuery 1.4 et le plugin scrollTo.
Merci beaucoup !
Mise à jour
Voici le code qui change le panneau.
$('#something a').click(function(event) {
event.preventDefault();
var link = $(this);
var id = link[0].hash;
$('#slider').scrollTo(id, 800, {
onAfter: function() {
link.parents('li').siblings().removeClass('active');
link.parent().addClass('active');
window.location.hash = id;
}
});
});
2 votes
Je suppose que vous avez essayé
event.preventDefault()
:)0 votes
@Marko Je ne sais pas où le placer!
0 votes
Pouvez-vous poster le reste de votre code ?
0 votes
@Marko Ivanovski Je ne pense pas que ce soit pertinent, mais je vais voir ce que je peux faire.
0 votes
@alex Eh bien, nous ne pouvons pas vous dire où placer
preventDefault
si nous ne pouvons pas voir votre code!3 votes
@Gareth Je ne pense pas qu'il y ait un endroit pour cela, car cela se produit dès que je mets à jour le hash.
0 votes
Possible duplicate de Modifier document.location.hash sans défilement de page