Javascript 如何在所有图像调整大小后触发调整大小事件
我有一个在调整窗口大小时调用的函数Javascript 如何在所有图像调整大小后触发调整大小事件,javascript,c#,model-view-controller,razor,Javascript,C#,Model View Controller,Razor,我有一个在调整窗口大小时调用的函数 $(window).resize(setVideoElements); 该函数用于设置一类视频缩略图容器的高度 var setVideoElements = function () { setElementsHeight('.videothumbnail'); }; function setElementsHeight(selector) { console.log('setting Max element height'); // G
$(window).resize(setVideoElements);
该函数用于设置一类视频缩略图容器的高度
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>
@视频。名称
@foreach(Video.TagsToVideos中的var标记)
{
}
@视频。描述
问题是函数在图像调整大小之前启动。我需要启动调整大小功能后,所有的图像已经被调整大小
有人知道如何在所有图像调整大小后启动此函数一次吗?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];
}
这很有意义,你知道没有所有的事件处理程序怎么做吗?没有事件处理程序是什么意思?关键是要利用onload事件,所以你需要事件处理程序。我的意思是没有为每个图像添加一个,它们是从无限滚动算法动态加载的,所以我必须将加载绑定到主体。这将肯定工作,虽然我只是希望有一种方式来绑定到一个容器或东西,但我不知道我想要的是不是可能的我认为我错了,图像已经加载我只需要启动功能后,调整大小的img发生
function clearHeight(selector) {
$(selector).height('auto');
}