2013-03-27 8 views
7

Aus irgendeinem Grund gibt $("...").width() den falschen Wert sofort nach dem Dokument bereit.jQuery width() falsch sofort nach dem Dokument bereit?

Ich bin sehen diese Werte:

Unmittelbar nach dem Dokument bereit:

$(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); 
}); 

ich die Breite von Wordpress Menüpunkte bekommen und sie so, dass sie immer fit in meinem Responsive Design Ändern der Größe. Es gibt keine Bilder oder Assets, die diese Änderung verursachen sollten.

Aktualisieren Siehe meinen Kommentar unten. Stellt sich heraus, es gab ein Asset, eine eingebettete Schriftart, die einen Sekundenbruchteil dauerte, um zu laden.

Antwort

15

Es könnte mit dem Fehlen von $(window).load im ersten Beispiel zu tun haben.

„Das Dokument bereit Ereignis führt bereits, wenn das HTML-Dokument geladen ist und das DOM bereit ist, auch wenn alle Grafiken nicht noch geladen haben. Wenn Sie Ihre Veranstaltungen anschließen wollen bestimmte Elemente vor das Fenster lädt, dann $ (Dokument) .ready ist der richtige Ort. " *

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

„Die Fenster Last Ereignis führt ein wenig später, als die komplette Seite voll beladen, einschließlich aller Bilder, Objekte und Bilder. Daher Funktionen, die Sorge Bilder oder Der Inhalt der anderen Seite sollte im Load-Ereignis für das Fenster oder das Inhalts-Tag selbst platziert werden. " *

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

* Zitate aus 4loc bezogen.

+6

Ich habe es herausgefunden ... Ich verwende eine eingebettete Schriftart im Menü. Die Breite des dom-Elements wird durch die Standardschriftart des Browsers bestimmt, bis die Schriftart vollständig geladen ist. Irgendwie hat mich deine Antwort an die eingebettete Schrift erinnert! – orourkedd

Verwandte Themen