jquery - 过滤算法改进
问题描述
当我选择category="books"和partner="amazon" 时, Product 4 显示良好,但如何隐藏Product 1?
请帮助我,使其能够正常工作。
<script>
$('.filter').click(function() {
$('.product').hide();
$('.filter:checked').each(function() {
var filter = $(this).attr('filter');
var data = $(this).attr('data').split(', ');
$.each(data, function(index,value) {
$('.product['+filter+'="'+value+'"]').show();
});
});
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Category</p>
<div><input class="filter" filter="category" data="boeken" type="checkbox" />books</div>
<div><input class="filter" filter="category" data="spellen" type="checkbox" />games</div>
<div><input class="filter" filter="category" data="andere" type="checkbox" />other</div>
<p>Partners</p>
<div><input class="filter" filter="partner" data="amazon" type="checkbox" />amazon</div>
<div><input class="filter" filter="partner" data="ebay" type="checkbox" />ebay</div>
<div><input class="filter" filter="partner" data="amazon, ebay" type="checkbox" />amazon and ebay</div>
<br>
<div class="products">
<div class="product" category="boeken" partner="amazon" />Product 1</div>
<div class="product" category="spellen" partner="ebay" />Product 2</div>
<div class="product" category="andere" partner="ebay" />Product 3</div>
<div class="product" category="andere" partner="amazon" />Product 4</div>
</div>
解决方案
您应该像这样编写选择器字符串:
$('.filter').click(function() {
$('.product').hide();
$('.filter:checked').each(function() {
var filter = $(this).attr('filter');
var data = $(this).attr('data').split(', ');
var selector = '.product';
$.each(data, function(index,value) {
selector += '['+filter+'="'+value+'"]';
});
$(selector).show();
});
});
推荐阅读
- ruby - 为什么 () 在 Ruby 中返回 nil?
- c++ - 跨命名空间的基于 SFINAE 的运算符重载
- ios - 从ios中firebase上的特定文件夹下载所有图像
- javascript - 如何对两个数组的值进行累加和求和?
- amazon-web-services - 超时 SSH 到公共 AWS VPC 子网(带公共 IP、到 igw 的路由表、NACL 允许所有、安全组允许 SSH 等)
- c++ - 如何将获取的字符串数据转换为字符数组?
- react-native - Expo Project 无法在模拟器上启动
- php - Searching mysql database that has over 3 mil records
- ambari - 使用 Ambari 保存工作表、查询和结果
- angular - add_header X-Frame-Options DENY;在 nginx conf 中不起作用,我仍然可以在我们的应用程序中看到 iframe