Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2012, 22:13
Интересующийся
Отправить личное сообщение для ZaValera Посмотреть профиль Найти все сообщения от ZaValera
 
Регистрация: 28.11.2011
Сообщений: 12

Проблема с $.width(), выдает '0'
Добрый день.
Имеется вот такой вот HTML-код:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link REL=STYLESHEET TYPE="text/css" HREF="test.css"> 
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<script>
testImg = document.createElement('img');
testImg.src = 'http://www.thg.ru/display/20030221/images/mire.jpg';
//document.body.appendChild(testImg);
function test()
{
	alert($(testImg).width());
	alert(testImg.width);
}
</script>
<div style = "width:100px;height:100px;background-color:green" OnClick = "test()">
</div>
</body>

При клике по зеленому квадрату выдается ширина картинки с использованием jQuery и без него.
Почему $.width() выдает 0???
Если добавить этот объект в DOM (убрать комментарий в 11 строке), то все нормально.
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2012, 22:15
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Сообщение от ZaValera
Если добавить этот объект в DOM (убрать комментарий в 11 строке), то все нормально.
Вот вы и ответили на свой вопрос. Потому, что нужно вставить элемент в DOM.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2012, 22:18
Интересующийся
Отправить личное сообщение для ZaValera Посмотреть профиль Найти все сообщения от ZaValera
 
Регистрация: 28.11.2011
Сообщений: 12

Это конечно замечательно, но мне нужно знать ширину объекта до его добавления в DOM.
Уточняю вопрос - как в jQuery можно узнать ширину изображения, если оно не находится в DOM?
testImg.width - работает и так.
Ответить с цитированием
  #4 (permalink)  
Старый 04.02.2012, 22:45
Интересующийся
Отправить личное сообщение для ZaValera Посмотреть профиль Найти все сообщения от ZaValera
 
Регистрация: 28.11.2011
Сообщений: 12

Браво, Вы просто мастер аналогий, было очень интересно читать!!!!
Но, я позволю себе не согласиться. Как только мы назначаем изображению src, оно начинает загружаться, т.е. форель кусочками перекочевывает в наш пакет. И до тех пор, пока загрузка не завершена, testImg.width тоже не знает истинных размеров. Но как только загрузка завершилась, форель в пакете, мы ее просто еще не решили, кому из друзей ее подарить, и ее размер testImg.width мы уже знаем.
И вот меня удивляет, что метод $.width() использует не все возможности для поиска ширины.
Ответить с цитированием
  #5 (permalink)  
Старый 04.02.2012, 22:56
Интересующийся
Отправить личное сообщение для ZaValera Посмотреть профиль Найти все сообщения от ZaValera
 
Регистрация: 28.11.2011
Сообщений: 12

И проблема-то вот в чем, я не против использовать testImg.width.
Но если я создаю объект вот таким вот образом
testImg = $('<img>').attr('src','test.jpg');

то как мне добраться до его ширины?
Я нашел вариант, но мне кажется, что он далеко не идеален:
var temp;
testImg.each(function(){temp =this.width});
Ответить с цитированием
  #6 (permalink)  
Старый 04.02.2012, 23:10
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

ZaValera,
testImg[0].width;


а testImg.width() не работает потому, что это DOM операция, и работает со свойствами offsetWidth/clientWidth
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2012, 23:21
Интересующийся
Отправить личное сообщение для ZaValera Посмотреть профиль Найти все сообщения от ZaValera
 
Регистрация: 28.11.2011
Сообщений: 12

Супер, то что надо. Большое спасибо.

Последний раз редактировалось ZaValera, 04.02.2012 в 23:28.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с эффектами через jquery morfie Events/DOM/Window 1 27.08.2010 17:59
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Canvas: drawImage проблема. Jurasmi jQuery 3 11.01.2010 14:57
xmlHTTP.responseText выдает #98FB98 olgatcpip AJAX и COMET 4 05.12.2009 23:36
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12