在我的网站上使用FlexSlider,我试图获得滑块中第一个图像的高度。我认为以下代码可以完成这项工作,但似乎图像加载很晚,所以它们在这个jQuery事件上没有高度。代码将返回“0”。
$(window).load(function() {
$(document).ready(function() {
var height = $(".flexslider>div>ul>li.flex-active-slide>a>img").height();
console.log(height);
});
});
但是如果我在加载页面后在浏览器控制台中运行此代码,则会返回正确的高度。
如何使用jQuery或JavaScript获取页面加载/准备好的图像高度?
答案 0 :(得分:4)
感谢您澄清window.load事件发生在document.ready之后,即使这与实际问题无关。
代码返回“0”的原因是由于默认flexslider.css中的css类:
.flexslider .slides > li {display: none; -webkit-backface-visibility: hidden;} /* Hide the slides before the JS is loaded. Avoids image jumping */
解决方案是使用callback API:
等待滑块正确加载$(window).load(function() {
$(".flexslider").flexslider({
start: function() {
var height = $(".flexslider a>img").first().height();
console.log(height);
}
});
});
答案 1 :(得分:1)
就绪事件发生在加载HTML文档之后,而onload事件发生在稍后,所有内容(例如图像)也已加载。
onload事件是DOM中的标准事件,而ready事件特定于jQuery。 ready事件的目的是它应该在文档加载后尽早发生,以便为页面中的元素添加功能的代码不必等待加载所有内容。
参见 window.onload vs $(document).ready()
$(document).ready(function() {
console.log($('.flexslider > ul > li > a > img').height());
});