Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не срабатывают window.onload и .ready() (https://javascript.ru/forum/events/25118-ne-srabatyvayut-window-onload-i-ready.html)

AterDeus 26.01.2012 03:24

Не срабатывают window.onload и .ready()
 
Здравствуйте!
Есть пункты меню, при нажатии на которые скриптом динамически загружаются свои галереи (внутрь блока #galery) и запускается функция myFunction.
html-код:
<div id="galery">
  <div id="galery_wrapper">
     <a href="..."><img src="..." /></a> // такого вида картинки подгружаются
  </div>
</div>

Скрипт:
function myFunction() {
$('#galery').css('height','0');
var y = $('#galery_wrapper').height();
$('#galery').animate({'height': y}, 2000);
}

Проблема в том, что высота #galery_wrapper зависит от загруженных картинок, и если загрузка не произошла, то высота #galery остается равной 0. Я пытался начать вызов функции myFunction с помощью window.onload и .ready(), но все равно иногда не срабатывает. В чем может быть проблема?

Pavel M. 26.01.2012 15:19

я так понял, что вы динамически создаете <div id="galery_wrapper">...
вместе с картинками, и только после этого начинается загрузка картинок

значит, если картинки могут быть любой высоты надо дожидаться загрузки картинок, а только потом определять высоту #galery_wrapper

AterDeus 26.01.2012 15:25

Да, именно. Поэтому я и пытался запускать код с определение высоты блока с window.onload, который, по идее выполняется после загрузки всех элементов страницы, но почему-то этого не происходит.
Т.е. функция вызова галереи выглядит так:
{
addFotos();
windows.onload = myFunction(); или $(myFunction());
}

Pavel M. 26.01.2012 15:46

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

trikadin 26.01.2012 15:58

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

AterDeus 26.01.2012 16:00

Pavel M.,Да, и что можно сделать?
Я делал и с помощью
setTimeout(myFunction(),20) И все равно иногда высота не верно бралась, а я планирую в будущем больше картинок добавить в галереи...
Есть какой-то способ запускать код после динамически загрузки элементов?

trikadin, простите, все исправил.

Pavel M. 26.01.2012 16:56

> Есть какой-то способ запускать код после динамически загрузки элементов?

есть разные способы

а если картинки будут минуту грузиться, то не будете начинать анимацию ?

AterDeus 30.01.2012 17:24

Решилось все просто )))
Нужно было просто всем IMG указать высоту. Простите, что потратил время ))


Часовой пояс GMT +3, время: 10:30.