2012-05-27 5 views
25

У меня есть сайт с двумя столбцами. Я хочу иметь равную высоту при использовании jQuery.window.onload vs document.ready jQuery

Я пытаюсь получить высоту столбца логотипа. У меня было:

$(document).ready(function() { 
    alert($('#logo').height()); 
});​ 

и не получилось. Поэтому я сменил его на:

window.onload = function(){ 
    alert($('#logo').height()); 
} 

И он работает. Что здесь происходит?

ответ

34

document ready уволен, когда DOM загружен, поэтому информация, подобная высоте, недоступна, если она явно не объявлена.

window onload ожидает, что активы на странице будут полностью загружены, так что теперь доступна такая информация, как высота.

+0

ой спасибо за ответ: P это есть способ получить высоту, но без необходимости W8 для изображений, чтобы загрузить? – KryQ

+0

Если размеры ширины/высоты указаны в теге '', вы можете получить их до их загрузки. В противном случае вам придется подождать. – ahren

2

У меня была такая же проблема в обработке высоты изображения и ширины внутри $ (документ) готов, и я нашел несколько лучше ЛИТЕРАТУРЫ, чтобы решить эту проблему ... Я надеюсь, что это может помочь некоторым один

$ (документ). ready()

Событие готовности документа активируется, когда документ HTML загружен и DOM готов, даже если все графики еще не загружены. Если вы хотите подключить свои события к определенным элементам до загрузки окна, то $ (document) .ready - это правильное место.

Код:

$(document).ready(function() { 
    // document is loaded and DOM is ready 
    alert("document is ready"); 
}); 

$ (окно) .load()

Событие окно нагрузки выстрелил немного позже, когда полная страница полностью загружена, в том числе всех кадров, объектов и изображений. Поэтому функции, относящиеся к изображениям или другому содержимому страницы, должны помещаться в событие загрузки для окна или самого тега содержимого.

Код:

$(window).load(function() { 
    // page is fully loaded, including all frames, objects and images 
    alert("window is loaded"); 
}); 
Смежные вопросы