javascript - JQuery 图像宽度一半的时间返回 0
问题描述
我知道这个问题与发布的其他问题相似,但我已经阅读了一堆,但我仍然无法弄清楚这个问题。我正在尝试根据图像的宽度添加一个类。基本上,如果图像是 100vw,我想添加一个名为 newTransform 的类。
这段代码有时会起作用。但是,其他时候宽度返回为 0。我发现这是因为我需要等到图像加载完毕才能调用宽度。我想我已经在这里做到了,但它不起作用。
$(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>
您可以使用 setTimeout 包装您的内部代码...
$(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)
});
推荐阅读
- java - Intellij 如何不将标签放在单独的行上?
- javascript - 弹出窗口内的 Kendo React Grid:为什么 getComputedStyle 为 IE11 和 Edge 返回 null,而不是 Chrome、Opera 和 Firefox?
- c# - C# - 在 ReadAllBytes 之后清除 RAM
- java - 使用从 SQLite 概括的数据填充 RecyclerView/ListView
- ios - 我想将 Apple Pay 集成到我的应用中。Apple 会照顾收款方吗?
- swift - 在 Timer 中调用函数
- python - 我可以使用 pandas to_sql 方法添加约束吗?
- android - Chrome 远程调试控制台不适用于 Android 4.4.4
- sql - 如何将 MS SQL STUFF 与子选择一起使用?
- javascript - 如何确保属性的对象属性存在简单?