$(document).height() e Chrome? Use o $(window).load()

Acabei de ter um problema que me tomou mais tempo do que o necessário. As alturas retornadas pelo método $(document).height() do JQuery eram diferentes no Firefox e no Chrome (no IE 7 também deu problema), quando chamadas dentro do $(document).ready(). Pesquisando, descobri que isso acontece porque o $(document).ready() é carregado quando o DOM está pronto e não necessariamente todos os elementos. Para executar alguma coisa depois que absolutamente tudo está no lugar o jeito é usar o $(window).load().

Pro que eu precisei, ficou assim:

$(window).load(function(){
	$("#menu").css('width', $(document).height());
});

Dica rápida, mas “se eu soubesse antes o que sei agora, não seria esse ser que chora” ou “odeio perder tempo com babaquice”.

Tags:

Comentários

  • Dica valiosa, somente obtida por quem se ferrou horas tentando solucionar algo que não deveria ter dado problema..rs

    Show cara, continua com os posts.

  • Diego Schell Fernandes

    Parabéns, eu estava usando o Chrome com o $(document).height() para e o mesmo me retornava valores diferentes quando atualizava a página.

    Com o $(window).load ele me retorna o mesmo valor em todas vezes que atualizo.

  • Bruno

    E onde eu jogo esse código ai? Ps.: Sou iniciante…

  • Felipe Elia

    Dentro de algum arquivo js ou dentro de alguma tag script.

  • ola cara, você sabe me dizer como capturo o higth atual, insiro em uma variavel, somo uma quantia e disparo no scrolltotop?

    já fiz os scrolltotop legal, mas queria que ele subisse gradativo sem utilizar divs para isso, valew pelo post cara

  • Felipe Elia

    Olá! Acho que o plugin http://demos.flesler.com/jquery/scrollTo/ facilitaria muito a sua vida! Abs