$('img').height()
возвращает 0
в chrome, но возвращает фактическую высоту в IE и firefox.
Каков фактический метод получения высоты изображения в хроме?
$('img').height()
возвращает 0
в chrome, но возвращает фактическую высоту в IE и firefox.
Каков фактический метод получения высоты изображения в хроме?
Как сказал Джош, если изображение еще не загружено полностью, jQuery не будет знать, каковы размеры. Попробуйте что-то подобное, чтобы убедиться, что вы пытаетесь получить доступ к этим размерам после полной загрузки изображения:
var img = new Image();
$(img).load( function() {
//-- you can determine the height before adding to the DOM
alert("height: " + img.height);
//-- or you can add it first...
$('body').append(img);
//-- and then check
alert($('body img').height());
}).error( function() {
//-- this will fire if the URL is invalid, or some other loading error occurs
alert("DANGER!... DANGER!...");
});
$(img).attr('src', "http://sstatic.net/so/img/logo.png");
Мое предположение заключается в том, что эта функция вызывается до того, как изображение закончит загрузку. Можете ли вы попробовать поставить задержку на функцию, чтобы убедиться, что это действительно так? Если это так, вы можете обмануть, используя таймер перед запуском функции.
Чуть сложнее обнаружить, когда изображение было загружено. Посмотрите на этот script для некоторых идей - возможно, это сработает для вас.
Немного уродливое, но эффективное исправление, которое я использовал, использовало бэкэнд-язык, в моем случае php, чтобы получить высоту и установить ее на изображении перед отправкой в браузер.
это уродливо, но просто и быстро
Предварительная загрузка изображения и настройка функции обратного вызова могут быть тем, что вы ищете:
// simple image preloader
function getHeight(el,fn) {
var img = new Image();
img.onload = function() { fn(img.height); };
img.src = el.attr("src");
}
$("img").each(function(){
getHeight($(this),function(h){
// what you need to do with the height value here
alert(h);
});
});
Попробуйте использовать предварительный загрузчик изображений, здесь один, я написал для ответа на еще один вопрос.
Сделав несколько экспериментов с этим, я обнаружил, что
$(this).height();
Возвращает 0 - однако, если вы просто используете простой старый JS
this.height;
Я получаю правильную высоту изображения.
У вас была такая же проблема: предварительно задайте ширину и высоту с помощью CSS или HTML.