2010-12-30 4 views
2

Я пишу простой плагин jQuery, который отображает изображения с определенным классом в центре экрана (при нажатии, полноразмер). Я использую этот HTML-код, в котором мое изображение на дисплеи:Проблема с шириной изображения в Google Chrome

<div id="source"> 
    <img src="" alt="" /> 
</div> 

В «ЦСИ» приписывать мне путь доступа к полноразмерного изображения, ждать OnLoad событие, где я делаю некоторые анимации с JQuery:

$("#source img").load(function(){ 
var calcWidth = this.width + ... 
}); 

Но в Google Chrome (и только в Google Chrome) при возникновении события onload this.width соответствует ширине предыдущего изображения. Это означает, что когда я впервые установил «src» в «img/1.jpg» с шириной 800 пикселей, все в порядке, но когда я пытаюсь установить второе изображение «img/2.jpg» в «src» с шириной 600 пикселей, this.width все еще возвращает 800px (в событии onload!).
как объяснить это поведение?

UPD:
Я установил SRC таким образом:

function NavClick(){ 
     $("#source img").attr({ 
      src: $(this).attr("src") 
     }); 
     currentImage = this.indx; 
    } 

«этот» ссылается на уменьшенное изображение, я использую тот же SRC для миниатюры и полноразмерного изображения для тестирования только, позже я поместил их в разные каталоги.
Этот код решить мою проблему, но я не совсем понимаю, почему:

function NavClick(){ 
     $("#source img").attr({ 
      src: "#" 
     }); 
     $("#source img").attr({ 
      src: $(this).attr("src") 
     }); 
     currentImage = this.indx; 
    } 

Перед установкой нового SRC я поставил его на «#», возможно, это связано с кэшированием изображений, но появляется только в Google Chrome ,

+0

Используйте '$ (this) .width()' для чтения текущей ширины изображения внутри обработчика jQuery. –

+0

$ (this) .width() возвращает значение, равное этому. Width – Kai

+1

Надеюсь, что у вас нет img src = "", когда загрузка страницы, пустой атрибут src для изображения означает, что источником является тот же url, что и один которые загружают текущую страницу (может быть POST или GET), установите как минимум «#» в атрибуте SRC, вы будете экономить часы отладки. – regilero

ответ

0

Используйте окно событий нагрузки, изображение не полностью загружен на события загрузки изображения (см this вопрос)

Я не проверял, но это может быть просто сделать трюк, дайте мне знать, если это Безразлично 't (или если это так)

$(window).load(function(){  
    var calcWidth = $("#source img").width() + ...; 
}); 
+1

Это не сработает, так как он проверяет, когда * меняется *' src', что означает ' window.onload' уже давно уволен. –