javascript - 基于自定义数据属性的产品过滤
问题描述
我正在创建基于复选框单击的产品过滤器。它应该根据复选框显示和隐藏data-ftype
,并将其与id
复选框匹配。
我在 StackOverflow 上看到了这个,但我的版本不起作用,我不知道为什么。如果有任何帮助,我将不胜感激。
$('input[type="checkbox"]').click(function() {
if ($('input[type="checkbox"]:checked').length > 0) {
$('.c1 >a1').hide();
$('input[type="checkbox"]:checked').each(function() {
$('.c1 >a1[data-ftype=' + this.id + ']').show();
});
} else {
$('.c1 >a1').show();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="full" value="fullrim" />full<br/>
<input type="checkbox" id="half" value="halfrim" />half<br/>
<input type="checkbox" id="without" value="without" />without<br/>
<div class="c1">
<div class="a1" data-ftype="full">
abc
</div>
<div class="a1" data-ftype="half">
pqr
</div>
<div class="a1" data-ftype="without">
stuv
</div>
</div>
解决方案
请检查以下代码,它现在正在运行
已对选择器进行了修复,而不是将 $('.c1 >a1') 替换为 $('.c1 > .a1')
$('input[type="checkbox"]').click(function() {
if ($('input[type="checkbox"]:checked').length > 0) {
$('.c1 > .a1').hide();
$('input[type="checkbox"]:checked').each(function() {
$('.c1 > .a1[data-ftype=' + this.id + ']').show();
});
} else {
$('.c1 > .a1').show();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="full" value="fullrim" />full<br/>
<input type="checkbox" id="half" value="halfrim" />half<br/>
<input type="checkbox" id="without" value="without" />without<br/>
<div class="c1">
<div class="a1" data-ftype="full">
abc
</div>
<div class="a1" data-ftype="half">
pqr
</div>
<div class="a1" data-ftype="without">
stuv
</div>
</div>
推荐阅读
- angular - 如何使用 node js buildpack 在 Cloud Foundry 上部署 Angular 6 应用程序?
- node.js - 在 Nodejs 和 MongoDB 的单元测试中使用fixtures
- amazon-web-services - 如何检查第三方 AMI 在我的 AWS 账户中运行?
- ios - 如何减小ipa文件的大小
- r - 在 R 中跟踪具有滞后的属性
- python - 使用 colorsys 模块在 Mandelbrot 和 Julia 集上产生彩虹效果
- r - 有条件地选择 dplyr 中的列
- sql - 使用左连接加入 3 个表
- python - 从数据框中的索引中获取最小值
- c++ - 无法将多个键添加到以结构为键的映射