[Pregunta]: .offset retorna 0 siempre.

Iniciado por Leguim, 21 Septiembre 2020, 03:13 AM

0 Miembros y 2 Visitantes están viendo este tema.

Leguim

Parece ridículo como una boludes tan simple me está dando tantos problemas tontos...
ando hace rato intentando..

Código (javascript) [Seleccionar]

$(document).ready(function()
{
      var sidebar_offset_top = $('.sidebar_left').offset().top;
      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.
});

WHK

prueba con position() en ves de offset(), sino intenta usar javascript puro sin jquery: $('objeto')[0].offsetTop

Leguim

#2
Cita de: 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

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

WHK

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.

EdePC

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.