jQuery scrolling animation works, but window.location.hash screws it over-Collection of common programming errors
Trying to solve this issue for 2 days now without success.
I have a main nav bar located in a single page website. The website has a scrolling animation. Whenever the user clicks a link from the nav bar, the window.location.hash should change.
Now, the thing is that it USED to change. But at the same time, it had flickering issues (which I couldn’t resolve with e.preventDefault()). The only way to stop the flickering was to add the stop() to the window.location.hash. So now I don’t have the flickering but the window.location.hash doesn’t change anymore, which isn’t a good thing.
This is the code
HomeAboutPlatformInvestorsTeamNews & PressStartup Explained
function gotoAndScroll(to){
if(typeof to == 'string') {
var diff = (to == '#newsPress')? 74 : 83;
$.scrollTo( {top: $(to).offset().top - diff}, 1500, {axis:'y',easing:'easeInOutCubic'});
}
else if(typeof to == 'number'){
$.scrollTo({top:Number(to), left:0},{duration:1500});
}
}
$('.nav a').click(function(e) {
if($(this).data('to') != '#home')
gotoAndScroll($(this).data('to'));
else
gotoAndScroll(0);
window.location.hash = $(this).data('to').stop();
});
$('a#logo').click(function(e) {
if($(this).data('to') != '#home')
gotoAndScroll($(this).data('to'));
else
gotoAndScroll(0);
window.location.hash = $(this).data('to').stop();
});
Edit:
When clicking one of the nav links, I get the next error: Uncaught TypeError: Object #about has no method 'stop' Uncaught SyntaxError: Illegal return statement
I realize that stop() shouldn't be there, but, against all logic, that's the only thing that fixes the flickering.
Can anyone tell me what I'm doing wrong here? :/ Thanks in advance.