3
I’m trying to insert this value in scrollTop but it’s not returning, some problem?
var top = $('.sku').offset().top;
$(window).animate({
scrollTop: top
}, 500)
3
I’m trying to insert this value in scrollTop but it’s not returning, some problem?
var top = $('.sku').offset().top;
$(window).animate({
scrollTop: top
}, 500)
3
Make sure to pick up the position of the element after it has been rendered, see the example:
<head>
... estilos e tudo mais
<script>
var top = $("div").offset().top; // vai retornar 0, porque o elemento ainda não foi renderizado
</script>
</head>
<body>
<div style="top: 200px;">Teste</div>
<script>
var top = $("div").offset().top; // vai retornar o valor correto pois o elemento foi renderizado
</script>
</body>
As best practices it is recommended to put the javascript (including the Imports) at the bottom of the page before closing the tag <body>, because the browser blocks rendering until these scripts are loaded:
<body>
... Seu conteudo html
// Vai carregar js depois que a pagina for renderizada
<script type="text/javascript" src="arquivo.js"></script>
<script>
... Seus scripts
</script>
</body>
And yet you can use the Document.ready of Jquery to run a script only when the document is ready:
<script>
$(document).ready(function() {
altert("pronto");
})
// ou a versão simplificada dele
$(function() {
altert("pronto");
})
</script>
Good!! Great!!!!
0
In principle the value must be passed correctly, however, the animation only seems to work if you use in $("html, body").
Thus
var top = $(".sku").offset().top;
$("html, body").animate({ scrollTop: top }, 500);
Hello good afternoon, the problem is that this example returns to the top as it returns value 0
There was a typo, missing the . in the $(".sku")
Opa yes! had put, but it is not the problem, it is as it did not take the value of the variable
What returns if you do $(".sku").length?
Browser other questions tagged javascript jquery
You are not signed in. Login or sign up in order to post.
At what point are you initiating this variable
top? make sure the element has already been rendered to pick up its position, otherwise it will always return 0.– Bruno Romualdo
@Brunoromualdo I am half lay in the subject, could give an example or some document for me to take a look?
– Josimara
You’re calling it inside a
$(document).ready(function(){ ... })or$(function(){ .. })?– Renan Gomes
That’s what it was, Thanks!
– Josimara
Whenever possible put your
javascriptat the end of the tag<body>, before her closure.– Bruno Romualdo
I already formulate a more explanatory answer for future research.
– Bruno Romualdo