Я пишу простой плагин 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 ,
Используйте '$ (this) .width()' для чтения текущей ширины изображения внутри обработчика jQuery. –
$ (this) .width() возвращает значение, равное этому. Width – Kai
Надеюсь, что у вас нет img src = "", когда загрузка страницы, пустой атрибут src для изображения означает, что источником является тот же url, что и один которые загружают текущую страницу (может быть POST или GET), установите как минимум «#» в атрибуте SRC, вы будете экономить часы отладки. – regilero