I have the following jQuery code
$(document).ready(function () {
$('.navtoTop').click(function(){
$("html").scrollTop( $("#topofthePage").offset().top );
});
});
where 'navtoTop' is the class of the button(something like 'Back to top') which has the fixed position in the bottom-left of the page and 'topofthePage' is the id of the <div>
at the most top of my page.
I have even tried this
$('.navtoTop').click(function(){
$('html, body').animate({scrollTop : 0},800);
return false;
});
Here is the html code
<body>
<div id="topofthePage"></div>
...
...
<img src="navtoTop.png" class="navtoTop">
</body>
I don't know what is going wrong but this is not working. Will someone explain and give a good solution?
Ask me the detail of code if you want.
You already got an answer on this. But, since you also want a smooth scrolling, consider the following alternative:
You have to use
window
instead ofhtml
:Note that
window
should not be enclosed in quotes as i'ts an object and not a tag.Better way to use:
A common scrollTo issue is having overflow set on the "html, body" element in css. Rarely mentioned when having scrolling/animating issues on html/body elements and can end up in excessive over-engineering.
If overflow needs to be set, put it on the body element only. Not both html,body.
It is also a good habit to use a data-* attribute in place of classes or IDs in your html. This gets you in the habit of separating styles from code. Consider this to make your life easier in the future:
Create Reusable Scroll Function
Create data attributes to html elements (data-name is arbitrary and should make sense):
ADD HTML LINK
ADD HTML ELEMENT
VERIFY CSS » overflow added to "html,body" won't work
INIT FUNCTION ON READY » initialize on doc ready with attribute name selector to create flexibility on multiple calls
Hope this helps!