2013-03-27 28 views
7

Bazı nedenlerden dolayı $("...").width(), belge hazırlandıktan hemen sonra yanlış değeri döndürüyor.jQuery width() belge hazırlandıktan hemen sonra yanlış mı?

hemen belge hazır sonra: Ben

bu değerleri bakın

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

Ben wordpress menü öğeleri genişliğini alma ve bunları yeniden boyutlandırma ediyorum benim duyarlı tasarım her zaman uyum sağlayın. Bu değişikliğe neden olacak resim veya varlık yok.

Güncelleştirme Aşağıdaki yorumuma bakın. Yüklenecek ayrık bir saniye süren gömülü bir font olan bir öğe var.

cevap

15

İlk örnekte $(window).load eksikliğiyle ilgili olabilir. HTML Belge yüklü olduğunu ve DOM tüm grafik henüz yüklenmez olsa bile, hazır olduğunda

"belge hazır olay zaten yürütür. Eğer için kanca olayları istiyorsanız 'dan önceki bazı elemanlar pencereyi yükler, sonra $ (document) .seçru yerdesiniz. " *

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

"pencere yükü olay tam sayfa tüm çerçeveler, nesneler ve resimler de dahil tam dolu. Bu nedenle işlevleri hangi endişe resimler veya olduğunda biraz sonra çalıştırır Diğer sayfa içerikleri, pencere veya içerik etiketinin kendisine ait yükleme olayına yerleştirilmelidir. " *

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

* alıntılar 4loc kaynaklı.

+6

Bunu çözdüm ... Menüde gömülü yazı tipi kullanıyorum. Dom öğesinin genişliği, yazı tipi tam olarak yüklenene kadar tarayıcının varsayılan yazı tipiyle belirlenir. Bir şekilde yanıtınız bana gömülü fontu hatırlattı! – orourkedd

İlgili konular