jquery - 全选时如何使用过滤器
问题描述
我正在尝试.filter
在 jQuery 中使用。使用此功能,我能够显示特定数据。但是我的问题是当我单击all
它时,它会隐藏所有内容。
$.ajax({
url: '/api/Item',
type: 'GET',
dataType: 'JSOn',
async: false,
success: function(res) {
for (var i = 0; i < res.length; i++) {
$('#Container').append('' +
'<div class="col-md-3 col-sm-6 col-xs-12 portfolio-item" data-brand="' + res[i].productBrand + '">' +
'<div class="portfolio-wrapper">' +
'<div class="portfolio-thumb">' +
'<img src="' + res[i].imageIcon + '" alt="" />' +
'</div>' +
'<div class="label-text">' +
'<h3 style="color: #04a185; font-family: VAG Rounded";>' + res[i].productName + '</h3>' +
'</div>' +
'</div>' +
'</div>' +
'')
}
}
})
posts = $('.portfolio-item')
$("#filters li span").click(function() {
var customType = $(this).attr('data-filter') // category
posts.hide().filter(function() {
return $(this).data('brand') === customType;
}).show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="filters" class="clearfix">
<li><span class="filter" data-filter="all"><h1>All</h1></span></li>
<li><span class="filter" data-filter="Blooming"><h1>Blooming </h1></span></li>
<li><span class="filter" data-filter="Sparkling"><h1>Sparkling </h1></span></li>
<li><span class="filter" data-filter="Sets"><h1>Sets</h1></span></li>
</ul>
解决方案
要完成这项工作,您可以检查是否customType
是或者all
单击的值。尝试这个:
var $posts = $('.portfolio-item')
$("#filters li span").click(function() {
var customType = $(this).data('filter');
$posts.hide().filter(function() {
return customType === 'all' || $(this).data('brand') === customType;
}).show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="filters" class="clearfix">
<li><span class="filter" data-filter="all"><h1>All</h1></span></li>
<li><span class="filter" data-filter="Blooming"><h1>Blooming </h1></span></li>
<li><span class="filter" data-filter="Sparkling"><h1>Sparkling </h1></span></li>
<li><span class="filter" data-filter="Sets"><h1>Sets</h1></span></li>
</ul>
<div class="portfolio-item" data-brand="Blooming">
Blooming
</div>
<div class="portfolio-item" data-brand="Sparkling">
Sparkling
</div>
<div class="portfolio-item" data-brand="Sets">
Sets
</div>
<div class="portfolio-item" data-brand="Blooming">
Blooming
</div>
推荐阅读
- kubernetes - LXD 与生产集群 (Kubernetes) 中的经典 VM
- python - 如何使用 Keras 重新缩放表示为 NumPy 数组的图像?
- python - 如何同时使用 & 和 | pandas .loc() 函数中的运算符?
- ios - 为什么我的 Xcode 10.1 Playground 没有运行代码?
- python - 找不到通过 csv 检查 Python 中的 URL 状态的方法
- javascript - 我需要这个函数返回这个数组之间的“差异”
- javascript - 无法使用 JS 变量访问带有“:”的 GeoJSON 属性
- angular - 名称只能包含 URL 友好字符 NPM 安装
- java - HotSpot JVM 在哪里存储解释的字节码?
- powershell - 在 xml 生成 PowerShell 脚本中实现跟踪