jQuery - ausführen einer Funktion vor dem Dokument.fertig... aber nicht zu früh
Ich habe eine Seite, die enthält ein div, das muss geändert werden über JS, wenn eine Seite geladen wird. Um dies zu tun, ich gebe es eine "default-Breite" von 760px und führen Sie dann den folgenden code:
function resizeList()
{
var wlwidth,iwidth,nwidth;
wlwidth = document.body.clientWidth - 200 - 60;
iwidth = 320;
nwidth = Math.floor(wlwidth / iwidth) * iwidth;
$('#list').css('width',nwidth);
}
$(document).ready(function(){
//if we're looking at a list, do the resize-thing, now and on window resize
if (window.location.pathname.toString().split('/')[1] == "list")
{
resizeList();
window.onresize = resizeList;
}
});
Die Seite jedoch kann eine Weile dauern zu laden, als die #list
div enthält eine Menge Bilder. So, das div wird nur erweitert zu füllen, die richtige Breite, nachdem alle Inhalte geladen hat. Ich kann nicht einfach nehmen Sie es aus der $(document).ready
Funktion, da sonst Fehler heraus sagen-Dokument.Körper ist nicht definiert.
Gibt es eine Möglichkeit, um die Größe des #list
div, bevor alle Inhalte geladen haben?
Bearbeiten
Siehe: http://www.google.com/images?q=whatever
Sie habe erreicht, was ich versuche zu tun erfolgreich. Die Liste ist die richtige Größe sofort auf die Seite laden, und dann aufgefüllt. Sie können sagen, dass Sie Größe alles, was via JS, indem die Größe des Fensters und beobachten die Elemente bewegen sich reibungslos. Traurig, dass google JS ist nicht die einfachste in der Welt zu Lesen Seufzer
- Sie könnten versuchen, Einstellung display: none; für #Liste, ändern Sie die Größe und display: block, um es über jQuery. Ich mag mich irren - aber ich denke, der browser lädt nicht die Bilder in einem versteckten div.
- sehr interessante Idee! Werde ich probieren... obwohl das Altern sehr schlecht für nicht-JS-Nutzer, unwiderruflich ausblenden der #Liste div
Du musst angemeldet sein, um einen Kommentar abzugeben.
Er ausgeführt wird, sobald es kann,
$(document).ready
ist das Ereignis, das Auftritt, wenn der dom fertig ist das rendering.Sollten Sie einen Ladebildschirm onload und dann eventuell auszublenden, wenn Sie nach der re-Größe.