Javascript JQuery Images Width一半时间返回0
我知道这个问题和其他发帖的问题很相似,但我已经读了很多,我还是没能弄明白这个问题。我试图添加一个基于图像宽度的类。基本上,如果图像是100vw,我想添加一个名为newTransform的类 这段代码有时会起作用。但是,其他时间宽度返回为0。我发现这是因为我需要等到图像加载后再调用宽度。我想我已经在这里做到了,但它不起作用Javascript JQuery Images Width一半时间返回0,javascript,jquery,Javascript,Jquery,我知道这个问题和其他发帖的问题很相似,但我已经读了很多,我还是没能弄明白这个问题。我试图添加一个基于图像宽度的类。基本上,如果图像是100vw,我想添加一个名为newTransform的类 这段代码有时会起作用。但是,其他时间宽度返回为0。我发现这是因为我需要等到图像加载后再调用宽度。我想我已经在这里做到了,但它不起作用 $(function () { var galleryReel = $(".gallery-reel-item"); galleryRee
$(function () {
var galleryReel = $(".gallery-reel-item");
galleryReel.each(function () {
let img = $(this).load( "img");
let width = img.width();
let viewWidth = $(window).width();
if (width == viewWidth) {
$(this).addClass("newTransform");
}
else {}
});
});
更新:我的更新代码如下。现在唯一的问题是,它在应用新样式之前会闪现旧样式
$(function () {
let timeToWait = 1000; // 1 second
setTimeout(() => {
var galleryReel = $(".gallery-reel-item");
galleryReel.each(function () {
let width = galleryReel.width();
let viewWidth = $(window).width();
if (width == viewWidth) {
$(this).addClass("newTransform");
}
});
}, timeToWait);
});
解决方案:我最终使用的解决方案是以下代码,同时添加一些css以最初隐藏库
$(function () {
let timeToWait = 1000; // 1 second
setTimeout(() => {
var galleryReel = $(".gallery-reel-item");
galleryReel.each(function () {
let width = galleryReel.width();
let viewWidth = $(window).width();
if (width == viewWidth) {
$(this).addClass("newTransform");
}
});
//show the gallery
$(".gallery-reel").css("visibility", "visible");
}, timeToWait);
});
在html代码中的某个地方。这将首先被隐藏
<div class="gallery-items-container" style="visibility:hidden">
//all your images are here
</div>
让img=$(this).load(“img”)代码>当然不会执行任何等待图像加载的操作OK。如何修复它?是否.gallery卷筒项目
元素是
元素?否。在.gallery卷筒项目内有图像元素。但是,我需要将该类添加到.gallery-revel-item中。谢谢!这似乎很有效。我确实将1000改为100,因为在应用新的转换样式之前,它正在闪烁旧样式。Ops!我意识到,如果我将timetowait设置为100,那么代码在某些屏幕上根本不适用。不管怎样,我们可以修复这个闪存吗?让img=$(this.load(“img”)代码>一点意义都没有我已经改变了。。。请查看上面我的更新代码。我添加了额外代码以隐藏和显示库。然后,您可以将等待时间增加到合理的数量,以便加载图像。
$(function () {
let timeToWait = 1000; // 1 second
setTimeout(() => {
var galleryReel = $(".gallery-reel-item");
galleryReel.each(function () {
let img = $(this).load( "img");
let width = img.width();
let viewWidth = $(window).width();
if (width == viewWidth) {
$(this).addClass("newTransform");
}
});
//show the gallery
$('.gallery-items-container').css('visibility', 'visible');
}, timeToWait)
});