У меня есть изображение, которое находится внутри обычного DIV. Позвольте называть его DIV b. Над DIV b есть еще один DIV, который я назову DIV a. DIV a имеет переполнение: скрыто. Вот код:
<div id="a">
<div id="b">
<img id="image" src="http://fgjdfgsjh.com/images/hghgajfhsd.jpg" height="186" width="900">
</div>
</div>
... вот некоторые важные CSS для этого примера:
#a {overflow: hidden; height: 128px;}
... и, наконец, некоторые.js:
<script>
$(document).ready(function(){
var test = $('#image').attr('height');
alert(test);
});
</script>
Как вы можете видеть, на изображении уже установлен атрибут высоты. Мой скрипт (jQuery) должен захватить эту информацию, но когда я использую $ ('# image'). Attr ('height'), сценарий доставляет мне число 128, которое является высотой элемента #a, который содержит #b и изображение, а не ожидаемая высота изображения, которая равна 186 и устанавливается как атрибут в HTML.
Это происходит в Chrome. Firefox может получить правильную высоту изображения (186, а не 128).
Как получить реальную высоту изображения в Chrome? Можно ли это сделать с помощью простого простого jQuery или мне нужно сделать какой-то трюк (например, перезагрузить изображение в отдельном объекте и проверить его первоначальную высоту)?
CSS обычно предпочтительнее атрибута height
. Чтобы использовать jQuery, используйте .css
:
$('#image').css('height');
Который вернет здесь 186px
. Если вы хотите только 186
, используйте .height
:
$("#image").height();
У Chrome есть неустойчивое поведение по этой проблеме. Я попробовал код, предоставленный @Mooseman, но при обновлении страницы снова и снова, иногда скрипт появлялся бы 128px, иногда он появлялся бы 186px!
Похоже, единственный способ сделать это - загружать изображение динамически. Я заимствовал код отсюда: " получение ширины и высоты динамического изображения ".
В конце концов, код:
$('<img/>').attr('src', $('#image').attr('src')).load(function() {
// Then just get the resulting loaded image height by using:
var myHeight = this.height;
}