我有一个在窗口调整大小上调用的函数
$(window).resize(setVideoElements);
该函数设置一类videoThumbnail容器的高度
var setVideoElements = function () { setElementsHeight('.videothumbnail'); };
function setElementsHeight(selector) {
console.log('setting Max element height');
// Get an array of all element heights
var elementHeights = $(selector).map(function () {
return $(this).height();
}).get();
// Math.max takes a variable number of arguments
// `apply` is equivalent to passing each height as an argument
var maxHeight = Math.max.apply(null, elementHeights);
// Set each height to the max height
$(selector).height(maxHeight);
}
除了射击太快之外,该功能正常工作
<div class="thumbnail videothumbnail">
<a href="@Url.Action("Video", new { ID = Video.ID })">
<img class="videoThumbnailImg" src="@Video.ThumbnailUrl" alt="">
</a>
<div class="caption">
<h3>@Video.Name</h3>
@foreach (var tag in Video.TagsToVideos)
{
<span><a href="#">@tag.Tag.Name</a></span>
}
<p>@Video.Description</p>
</div>
问题是在调整图像大小之前函数正在触发。我需要在所有图像都已调整大小后触发调整大小功能。
有人知道如何在所有图像都调整大小后触发此功能吗?
答案 0 :(得分:2)
<img>
HTML元素有一个onload
回调。当图像数据从其源完成下载时,它将触发。利用它来记录加载图像的时间。计算加载事件并在加载所有图像后调用setElementHeight
。
示例如下所示:
var sources = ['img/a.jpg', 'img/b.jpg', 'img/c.jpg'],
loaded = 0;
for (var idx in sources) {
var img = document.createElement('img');
img.onload = function() {
loaded++;
if(loaded === sources.length) {
setElementHeight();
}
}
img.src = sources[idx];
}
答案 1 :(得分:1)
对于任何想知道我需要清除我在调整大小
上设置的固定高度的人function clearHeight(selector) {
$(selector).height('auto');
}