在这种情况下,我设置了width: 100%
和height: auto
的图像(实际图像尺寸为362x614)。我需要获得另一步的图像高度。
这是我的代码:
<img class="phone" src="img/phone2.png">
和js:
$(document).ready(function() {
phoneSlider();
});
$(window).resize(function(){
phoneSlider()
});
function phoneSlider(){
var phoneMaskWidth = $(".phone").width();
var phoneMaskHeight = $(".phone").height();
console.log(phoneMaskWidth + "|" + phoneMaskHeight);
.......
}
然后,我检查控制台,结果: 362|0
。为什么phoneMaskHeight显示0,我怎样才能获得真正的高度?
答案 0 :(得分:2)
使用:
var img = new Image();
img.onload = function() {
alert(this.width + 'x' + this.height);
}
img.src = $(".phone").attr('src');
<强> Working Fiddle 强>
答案 1 :(得分:2)
将代码从$(document).ready()
移至$(window).load()
。浏览器需要加载图像(或至少是图像标题)才能计算出它的宽度和高度。文档就绪事件可以在浏览器有机会查看图像之前触发。
Demo here;更改图像源(或清空浏览器缓存),运行并查看控制台
答案 2 :(得分:0)
$("img.phone").on('load', function() { alert( this.height ); });
这对我有用。
答案 3 :(得分:0)
浏览器异步加载图像,直到图像完全加载,其高度将是未知的。
正如其他人所建议的那样,您需要将代码附加到加载图像时触发的“onload”事件,但这会强制您更改整个 phoneSlider 方法。您需要在相应的 onload 回调中放置取决于图像高度的所有内容。
如果您不需要在加载图像后立即进行计算,Salman A's answer是更好的方法 - 在窗口#onload 事件被触发时放置逻辑,这确保加载所有外部资源(包括图像)。
答案 4 :(得分:0)
$(document).ready(function(){
console.log($('#myimg')。width()+'x'+ $('#myimg')。height());
的console.log($( “#myimg”)ATTR( 'SRC'));
})
工作演示[http://jsfiddle.net/A5QJM/238/]