javascript - Shuffle.js - 在页面加载时过滤图像
问题描述
有 2 个选项卡(数据组)- 图形和徽标,带有图像,每个有 3 个图像,总共 6 个图像。过滤器效果很好,当您单击第一个选项卡时,它会变为活动状态并显示 3 个已过滤并属于第一个数据组(图形)的图像。但是当您刷新页面时,您也会看到第一个活动选项卡(数据组图形),但显示所有 6 张图像,这是错误的。过滤器仅在您单击选项卡时才开始工作。它应该只显示与数据组匹配的 3 个。我已经尝试了这篇文章中的几个脚本和解决方案。没有任何效果。有什么解决办法吗?
function portfolio_init() {
var portfolio_grid = $('#portfolio_grid'),
portfolio_filter = $('#portfolio_filters');
if (portfolio_grid) {
portfolio_grid.shuffle({
speed: 450,
itemSelector: 'figure'
});
$('.site-main-menu').on("click", "a", function(e) {
portfolio_grid.shuffle('update');
});
portfolio_filter.on("click", ".filter", function(e) {
portfolio_grid.shuffle('update');
e.preventDefault();
$('#portfolio_filters .filter').parent().removeClass('active');
$(this).parent().addClass('active');
portfolio_grid.shuffle('shuffle', $(this).attr('data-group'));
});
}
}
<!-- Portfolio Subpage -->
<section class="pt-page pt-page-4" data-id="portfolio">
<div class="border-block-top-110"></div>
<div class="section-inner">
<div class="section-title-block">
<div class="section-title-wrapper">
<h2 class="section-title">Portfolio</h2>
<h5 class="section-description">Works</h5>
</div>
</div>
<!-- Portfolio Content -->
<div class="portfolio-content">
<!-- Portfolio filter -->
<ul id="portfolio_filters" class="portfolio-filters">
<li class="active">
<a class="filter btn btn-sm btn-link active" data-group="graphics">Graphics</a>
</li>
<li>
<a class="filter btn btn-sm btn-link" data-group="logo">Logo</a>
</li>
<li>
<a class="filter btn btn-sm btn-link" data-group="print">Print</a>
</li>
<li>
<a class="filter btn btn-sm btn-link" data-group="billboards">Billboards</a>
</li>
<li>
<a class="filter btn btn-sm btn-link" data-group="misc">Misc</a>
</li>
<li>
<a class="filter btn btn-sm btn-link" data-group="photo">Photo</a>
</li>
</ul>
<!-- End of Portfolio filter -->
<!-- Portfolio Grid -->
<div id="portfolio_grid" class="portfolio-grid portfolio-masonry masonry-grid-3">
<!-- Portfolio 1 - Graphics -->
<figure class="item gallery" data-groups='["graphics"]'>
<a href="images/portfolio/full/3.jpg" class="lightbox f-gallery" title="bnr 1">
<img src="images/portfolio/3.jpg" alt="">
<div>
<h5 class="name">bnr 1</h5>
<small>Graphics</small>
<i class="pe-7s-icon pe-7s-photo"></i>
</div>
</a>
<a href="images/portfolio/full/4.jpg" title="bnr 1"></a>
<a href="images/portfolio/full/5.jpg" title="bnr 2"></a>
</figure>
<figure class="item gallery" data-groups='["graphics"]'>
<a href="images/portfolio/full/3.jpg" class="lightbox f-gallery" title="bnr 2">
<img src="images/portfolio/3.jpg" alt="">
<div>
<h5 class="name">bnr 2</h5>
<small>Graphics</small>
<i class="pe-7s-icon pe-7s-photo"></i>
</div>
</a>
<a href="images/portfolio/full/4.jpg" title="Some text"></a>
<a href="images/portfolio/full/5.jpg" title="Some text"></a>
</figure>
<figure class="item gallery" data-groups='["graphics"]'>
<a href="images/portfolio/full/3.jpg" class="lightbox f-gallery" title="bnr 3">
<img src="images/portfolio/3.jpg" alt="">
<div>
<h5 class="name">bnr 3</h5>
<small>Graphics</small>
<i class="pe-7s-icon pe-7s-photo"></i>
</div>
</a>
<a href="images/portfolio/full/4.jpg" title="Some text"></a>
<a href="images/portfolio/full/5.jpg" title="Some text"></a>
</figure>
<!-- /Portfolio 1 - Graphics -->
<!-- Portfolio 2 - Logo -->
<figure class="item gallery" data-groups='["logo"]'>
<a href="images/portfolio/full/3.jpg" class="lightbox f-gallery" title="logo 1">
<img src="images/portfolio/3.jpg" alt="">
<div>
<h5 class="name">logo 1</h5>
<small>Logo</small>
<i class="pe-7s-icon pe-7s-photo"></i>
</div>
</a>
<a href="images/portfolio/full/4.jpg" title="bnr 1"></a>
<a href="images/portfolio/full/5.jpg" title="bnr 2"></a>
</figure>
<figure class="item gallery" data-groups='["logo"]'>
<a href="images/portfolio/full/3.jpg" class="lightbox f-gallery" title="logo 2">
<img src="images/portfolio/3.jpg" alt="">
<div>
<h5 class="name">logo 2</h5>
<small>Logo</small>
<i class="pe-7s-icon pe-7s-photo"></i>
</div>
</a>
<a href="images/portfolio/full/4.jpg" title="Some text"></a>
<a href="images/portfolio/full/5.jpg" title="Some text"></a>
</figure>
<figure class="item gallery" data-groups='["logo"]'>
<a href="images/portfolio/full/3.jpg" class="lightbox f-gallery" title="logo 3">
<img src="images/portfolio/3.jpg" alt="">
<div>
<h5 class="name">logo 3</h5>
<small>Logo</small>
<i class="pe-7s-icon pe-7s-photo"></i>
</div>
</a>
<a href="images/portfolio/full/4.jpg" title="Some text"></a>
<a href="images/portfolio/full/5.jpg" title="Some text"></a>
</figure>
<!-- /Portfolio 2 - Logo -->
</div>
<!-- /Portfolio Grid -->
</div>
<!-- /Portfolio Content -->
</div>
</section>
<!-- /Portfolio Subpage -->
解决方案
我来到这里寻找相同问题的答案,但无法使解决方案发挥作用,但是它成功地为我指明了正确的方向,最终通过创建一个在页面加载时执行的函数来解决它:
function shuffleInit (id){
$(document).ready(function() {
$('#grid').hide();
jQuery('#'+id)[0].click();
$('#grid').show();
$('#'+id).trigger('click');
});
<body onload="shuffleInit('graphics');">
请记住将 ID 添加到过滤器 div,以便它们可以被 shuffleInit() 函数定位。请注意,#grid 是图像的默认 shuffle.js 容器 - 我添加了 hide 和 show 命令以在页面加载时隐藏可见的重新随机播放动画。最后一次点击触发线只是一个突出按钮的装饰性添加,因此用户可以看到已应用了哪个过滤器选项。
这适用于 Bootstrap 3。希望它对某人有所帮助!
推荐阅读
- sql-server - 无法通过 ODBC 连接到 Microsoft SQL Server (VM)
- typescript - 如何在Vuetify.js的snackbar中显示文本字段验证检查结果?
- python - 从具有相同键值的dict列表中查找最后一个索引
- javascript - 单击时缩放到标记位置 - 传单
- sql-server - 如何通过 Azure 管道将 SQL 架构更改部署到 Always On 可用性组?
- c# - 使用 Newtonsoft 进行序列化和反序列化时出错
- ios - iOS API TimeZone.current 不返回实际系统时间
- facebook - FB 聊天机器人只回复我
- python - 流式视频中的 M4S 文件扩展。如何在 Python 中下载和使用
- c# - 为什么从 C# 中大小大于 100MB 的图像的内存流创建图像对象时出现“参数无效”异常?