jQuery ancho () incorrecto inmediatamente después de listo el documento?

Por alguna razón, $("...").width() está devolviendo el valor incorrecto inmediatamente después de que el documento esté listo.

Estoy viendo estos valores:

Inmediatamente después de listo el documento:

 $(document).ready(function(){ $("li.active a").width() //returns 76 - incorrect }); $(document).ready(function(){ $(window).load(function(){ $("li.active a").width() //returns 59 - the correct value }); }); $(document).ready(function(){ setTimeout(function(){ $("li.active a").width() //returns 59 - the correct value }, 100); }); 

Estoy obteniendo el ancho de los elementos del menú de wordpress y cambiándolos de tamaño para que siempre se ajusten a mi diseño receptivo. No hay imágenes o activos que deban causar este cambio.

Actualización Ver mi comentario a continuación. Resulta que había un activo, una fuente incrustada, que tardó una fracción de segundo en cargarse.

Podría ser por la falta de $(window).load en el primer ejemplo.

“El evento de documento listo ya se ejecuta cuando se carga el documento HTML y el DOM está listo, incluso si todos los gráficos aún no se han cargado. Si desea conectar sus eventos para ciertos elementos antes de que se cargue la ventana, entonces $ ( documento) .ready es el lugar correcto “. *

 $(document).ready(function() { // executes when HTML-Document is loaded and DOM is ready alert("document is ready"); }); 

“El evento de carga de la ventana se ejecuta un poco más tarde cuando la página completa está completamente cargada, incluidos todos los marcos, objetos e imágenes. Por lo tanto, las funciones relacionadas con las imágenes u otros contenidos de la página deben colocarse en el evento de carga de la ventana o en la etiqueta de contenido. ” *

 $(window).load(function() { // executes when complete page is fully loaded (all frames, objects and images) alert("window is loaded"); }); 

* Citas obtenidas de 4loc .