Parece ridículo como una boludes tan simple me está dando tantos problemas tontos...
ando hace rato intentando..
$(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.
});
prueba con position() en ves de offset(), sino intenta usar javascript puro sin jquery: $('objeto')[0].offsetTop
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
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.
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.