Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 21 Septiembre 2020, 03:13 am



Título: [Pregunta]: .offset retorna 0 siempre.
Publicado por: Leguim en 21 Septiembre 2020, 03:13 am
Parece ridículo como una boludes tan simple me está dando tantos problemas tontos...
ando hace rato intentando..

Código
  1. $(document).ready(function()
  2. {
  3.      var sidebar_offset_top = $('.sidebar_left').offset().top;
  4.      alert(sidebar_offset_top); // devuelve cero pero cuando envío esto por consola me devuelve 305, es decir es ridículo que me devuelva cero.
  5. });
  6.  


Título: Re: [Pregunta]: .offset retorna 0 siempre.
Publicado por: WHK en 21 Septiembre 2020, 03:20 am
prueba con position() en ves de offset(), sino intenta usar javascript puro sin jquery: $('objeto')[0].offsetTop


Título: Re: [Pregunta]: .offset retorna 0 siempre.
Publicado por: Leguim en 21 Septiembre 2020, 03:26 am
prueba con position() en ves de offset(), sino intenta usar javascript puro sin jquery: $('objeto')[0].offsetTop

En esos casos el resultado es el mismo, me sigue mostrando cero... es muy raro...

EDIT: creo que noté que muestra el dato antes de que la página cargue completamente, aunque lo tengo en document ... ready igual lo carga antes... nose o me habrá parecido...

Ya que si pongo un timer y le digo que ejecute ese código en 5s entonces si lo va a mostrar.. sigo sin entender


Título: Re: [Pregunta]: .offset retorna 0 siempre.
Publicado por: WHK en 21 Septiembre 2020, 04:30 am
Entonces tienes problemas de renderización asincrónica, es un problema muy típico en angular y react cuando usas componentes o fragmentos. En ves de detectar el ready de un documento debes detectar el ready del componente y para lograr eso debes utilizar funciones promise.


Título: Re: [Pregunta]: .offset retorna 0 siempre.
Publicado por: EdePC en 21 Septiembre 2020, 04:33 am
Habría que revisar el html y el css también, ya que el evento ready se ejecuta cuando el DOM haya cargado, pero aún faltarían por cargar imágenes que pueden llegar a "mover" elementos para ocupar espacios, o scripts que pueden cambiar el aspecto.

Prueba con $( window ).on( "load", function() { ... }) este si se ejecuta después que haya cargado el DOM, las imágenes y los scripts. Pero sería mejor sanitizar un poco el código para usar la carga del DOM porque usar Window puede llegar a detener y deformar la carga de la página si hay problemas de red.