Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: jQuery - ширина и высота только что созданного элемента
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » jQuery - ширина и высота только что созданного элемента

Страниц (1): [1]
 

1. lamozavrik - 12 Марта, 2012 - 18:10:49 - перейти к сообщению
Привет уважаемые форумчане )) Такая вот проблемка у меня возникла. Как узнать ширину и высоту только что созданного элемента?

Есть вот такой код:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function bigImg(img){
  3.    
  4.     var imgDiv = jQuery('<div class="bigimg"></div>');
  5.     var bigImg = jQuery('<img src="' + img + '" />');
  6.    
  7.     jQuery('body').append(imgDiv);
  8.     imgDiv.append(bigImg);
  9.     var imgH = bigImg.height();
  10.     var imgW = bigImg.width();
  11.     alert(imgH);
  12.  
  13. }
  14.  


Так вот при первом вызове в алерте у меня приходит 0, а если обновить страницу и вызвать функцию еще раз, то уже в алерте нормально приходит высота объекта. Но если сбросить кеш браузера (Ctrl + F5), то опять тоже самое ((( Как мне узнать сразу ширину и высоту динамически созданного элемента? Заранее спасибо )
2. IllusionMH - 12 Марта, 2012 - 19:01:23 - перейти к сообщению
lamozavrik, может проблема в том, что изображение подгружается асинхронно, и пока оно не загружено контейнер имеет нулевой размер.
Нужно навесить обработчик события onload и уже там выводить
CODE (javascript):
скопировать код в буфер обмена
  1. function bigImg(img) {
  2.     var imgDiv = jQuery('<div class="bigimg"></div>');
  3.     var bigImg = jQuery('<img src="' + img + '" />').on("load", function() {
  4.         var imgH = bigImg.height();
  5.         var imgW = bigImg.width();
  6.  
  7.         alert(imgW + "x" + imgH);
  8.     });
  9.  
  10.     jQuery('body').append(imgDiv);
  11.     imgDiv.append(bigImg);
  12. }

Когда происходит обновление(из кеша) изображение уже не загружается, а сразу вставляется из кеша

upd.переделал функцию под JQ
3. lamozavrik - 12 Марта, 2012 - 19:16:53 - перейти к сообщению
IllusionMH, блин, спасибо огромное )) А я почему то на более старой версии JQ делал и даже не знал про метод on() )))
4. IllusionMH - 12 Марта, 2012 - 19:32:33 - перейти к сообщению
lamozavrik, методы on/off появились в версии 1.7.
Модно спокойно использовать просто
CODE (javascript):
скопировать код в буфер обмена
  1. var bigImg = jQuery('<img src="' + img + '" />').load(function() {


upd. Все остальные методы назначения обработчиков событий, начиная с версии 1.7, в конечном итоге сводятся к вызову функции on()
5. lamozavrik - 12 Марта, 2012 - 20:07:24 - перейти к сообщению
IllusionMH, еще раз спасибо )) Просто в JS не силен )) Буду учится дальше ))

 

Powered by ExBB FM 1.0 RC1