javascript - 我可以使用其他过滤器来代替 Isotope.js 吗?Isotope.js 无法正常工作,我不知道为什么
问题描述
我有 3 个按钮,有点像我想与 Isotope.js 一起使用的过滤器(更小/相同/更大)。我一直在查看文档,但仍然无法弄清楚如何使其工作。在我看来,一切都设置得很好,但它仍然不能正常工作,作为一个过滤器,它只会显示具有确切类别的项目。这是 HTML:
<div id="mouse-buttons-wrapper">
<div class="btn-group filter-button-group" id="mouse-buttons">
<button type="button" class="button btn btn-lg btn-outline-warning" id="Smaller"
data-filter=".smaller">Smaller</button>
<button type="button" class="btn btn-lg btn-outline-warning" id="Same">Same</button>
<button type="button" class="btn btn-lg btn-outline-warning" id="Bigger">Bigger</button>
</div>
</div>
<div class="btn-group" id="mouse-buttons"></div>
<div class="container" id="mouses">
<div class="row row-cols-1 row-cols-md-5 g-4 text-justify grid">
<div class="col grid-item smaller">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
</div>
</div>
</div>
我的 Javascript I 用于同位素设置:
$('.grid').isotope({
// options...
itemSelector: '.grid-item',
masonry: {
columnWidth: 200
}
});
// filters
$(".grid").isotope({
filter: '.smaller'
});
$(".grid").isotope({
filter: '.same'
});
$(".grid").isotope({
filter: '.bigger'
});
})(jQuery); // End of use strict
// init Isotope
var $grid = $('.grid').isotope({
// options
});
// filter items on button click
$('.filter-button-group').on('click', 'button', function () {
var filterValue = $(this).attr('data-filter');
$grid.isotope({
filter: filterValue
});
$('.filter-button-group').on('click', 'button', function () {
var filterValue = $(this).attr('data-filter');
$grid.isotope({
filter: filterValue
});
我会很感激任何帮助,我很长时间以来一直坚持这一点。非常感谢。
解决方案
您没有遵循同位素的基本结构。请遵循以下结构:
<html>
<div id="mouse-buttons-wrapper">
<div class="btn-group filter-button-group" id="mouse-buttons">
<button type="button" class="button btn btn-lg btn-outline-warning" id="Smaller" data-filter=".smaller">Smaller</button>
<button type="button" class="btn btn-lg btn-outline-warning" id="Same" data-filter=".same">Same</button>
<button type="button" class="btn btn-lg btn-outline-warning" id="Bigger" data-filter=".bigger">Bigger</button>
</div>
</div>
<div class="container" id="mouses">
<div class="row row-cols-1 row-cols-md-5 g-4 text-justify grid">
<div class="col grid-item smaller">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item same">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item bigger">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item smaller">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col grid-item bigger">
<div class="card">
<img src="..." class="card-img-top img-fluid" alt="...">
<div class="card-body">
<h6 class="card-title">Card title</h6>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
</div>
</div>
</html>
<script type="text/javascript">
jQuery(document).ready(function($) {
var $grid = $('.grid').isotope({
// options...
itemSelector: '.grid-item',
masonry: {
columnWidth: 200
}
});
$("#mouse-buttons").on("click", "btn", function() {
var filterValue = $( this ).attr('data-filter');
$grid.isotope({ filter: filterValue });
});
});
</script>
推荐阅读
- database - 用于处理大量用户的聊天应用程序的数据库架构
- html - 背景图像在移动设备中不缩放
- android - 如何诊断 Google Play 上的 APK 的“无法安装”?
- c# - 删除返回错误 405(不允许方法) 我正在使用 React 和 ASP.net。我没有大多数人说要编辑的网络配置文件,所以我迷路了
- facebook - Facebook Page Feed Webhook 在测试中工作,但不是在现场
- c# - 我无法更新/编辑与 Entity Framework Core 的一对一关系
- c# - .Net Native 中的反射和激活
- ios - 将浮点数转换为货币字符串格式化程序的问题
- php - Hubspot 的表单 API 无法识别我的自定义表单
- java - 在java中逐字反转字符串(不使用StringBuilder)