javascript - 在 JQuery 3.X 中完成加载后,如何在具有类的所有图像上触发函数?
问题描述
我有一个需要加载大量图像的网页。我想在图像加载时显示一个带有加载 gif 的 div,但我想在图像加载完成后淡出该 div。当我在互联网上搜索时,我发现了“.load”功能,但这不适用于图像。“.on('load', function(){...})” 也不起作用。
这是我尝试过的,但不起作用。
<a data-fancybox="gallery" href="image1.jpg">
<img src="thumbs/image1.jpg" class="slideshow_image"/>
<div class="loading">
<div class="loading_image">
<img src="loading.gif"/>
</div>
</div>
</a>
<a data-fancybox="gallery" href="image2.jpg">
<img src="thumbs/image2.jpg" class="slideshow_image"/>
<div class="loading">
<div class="loading_image">
<img src="loading.gif"/>
</div>
</div>
</a>
<a data-fancybox="gallery" href="image3.jpg">
<img src="thumbs/image3.jpg" class="slideshow_image"/>
<div class="loading">
<div class="loading_image">
<img src="loading.gif"/>
</div>
</div>
</a>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script>
$(".slideshow_image").on("load", function() {
$(this).next().fadeOut("slow");
});
</script>
解决方案
这实际上工作正常。
https://codepen.io/tmdesign/pen/NWqqXwy
您所经历的可能与您正在使用的画廊库发生冲突。他们经常在 HTML 中复制图像以实现其效果。我建议查看检查器中的最终输出,看看.next()
逻辑是否仍然成立。
但是,要回答您的问题,如果您删除该画廊,就像我在上面的链接中所做的那样,您会看到“加载”图像淡出(在示例中,所有 6 个图像--3 个显示图像,3 个加载图像--是一样的,但你仍然可以看到效果)。
<script>
$(".slideshow_image").on("load", function() {
$(this).next().fadeOut("slow");
});
</script>
推荐阅读
- java - Java LocalTime 实现线程安全
- python - 在 tkinter 窗口类中显示活动列表
- c - 语言-C,while循环,错误输入错误
- javascript - 为什么 String.indexOf 会这样运行?
- mysql - 基于计数和删除的条件 SQL 连接
- python - 在python中添加到列表(来自类实例)
- firebase - 如何对具有发布、放置、删除到 Firestore 的多个端点的快速 http 云功能进行单元测试?
- android - Android 在 OkHttp 上禁用 SSL 固定
- javascript - 使用 NodeJS/Express 将数据加载到 Snowflake
- flutter - Flutter 从 Google Drive 和 One drive 下载部分文件