javascript - 使用 Input 隐藏和显示特定类名的 div 并且仅显示一个类
问题描述
我有一组对应于一组图像的复选框。检查输入时,仅应显示具有相应类的那些图像。并不是所有可能与其他类一起具有该类的图像。
例如,
有些图像有云类,而另一些可能有云和数据、云、数据和网络等排序。当我检查云时,应该只出现带有云的图像。当我检查云和数据时,只会出现那些带有云和数据的图像。
这就是我试图在我的复选框中添加一个活动类的方法。这部分有效,因为我需要强调它们
$('.posts-filter input[type=checkbox]').change(function(){
// Audit all checkboxes on/off state
let picked = $('.posts-filter input[type=checkbox]:checked') // <-- just get the checked ones
// Somehow, extract just the "id" from just the checked elements
// picked = ['cloud', 'network', 'data'];
let specificTech;
for (let i = 0; i < picked.length; i++){
specificTech = picked[i].name;
}
$(this).parent().toggleClass('active');
})
复选框:
<aside class="filter cell small-12 large-8">
<span class="label">Technologies</span>
<div class="posts-filter">
<span class="posts-filter__sub">
<label class="posts-filter__label cloud">
<input type="checkbox" value="cloud">
<?php cloud_svg(); ?>
Cloud
</label>
</span>
<span class="posts-filter__sub">
<label class="posts-filter__label data">
<input type="checkbox" value="data">
<?php data_svg(); ?>
Data Protection & Data Management
</label>
</span>
<span class="posts-filter__sub">
<label class="posts-filter__label networking">
<input type="checkbox" value="networking">
<?php networking_svg(); ?>
Networking
</label>
</span>
<span class="posts-filter__sub">
<label class="posts-filter__label security">
<input type="checkbox" value="security">
<?php security_svg(); ?>
Security
</label>
</span>
<span class="posts-filter__sub">
<label class="posts-filter__label storage">
<input type="checkbox" value="storage">
<?php storage_svg(); ?>
Storage
</label>
</span>
<span class="posts-filter__sub">
<label class="posts-filter__label virtualization">
<input type="checkbox" value="virtualization">
<?php virtualization_svg(); ?>
Virtualization
</label>
</span>
</div>
</aside>
图片:
<a class="partner cloud data security" href="http://www.ca.com/" target="_blank"><img width="70" height="70" src="//localhost:3000/wp-content/uploads/2019/04/Image-7.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt=""></a>
<a class="partner cloud" href="http://www.ca.com/" target="_blank"><img width="70" height="70" src="//localhost:3000/wp-content/uploads/2019/04/Image-7.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt=""></a>
解决方案
由于您的复选框的值与您要选择的类匹配,因此您可以从中构造一个选择器。您说如果选择了多个,则结果应该具有所有值,这意味着选择器的逻辑和条件。
$(document.body).on('change', ':checkbox', function(){
var $checkedCheckboxes = $(':checkbox:checked');
if ($checkedCheckboxes.length) {
var classesSelector = '.'+ $checkedCheckboxes.get().map(it=>it.value).join('.');
console.log(classesSelector);
} else {
console.log('no elements selected');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>
<input type="checkbox" value="cloud">
Cloud
</label>
<label>
<input type="checkbox" value="data">
Data
</label>
<label>
<input type="checkbox" value="network">
Network
</label>
推荐阅读
- c# - 我可以在启用 gpu 的情况下创建 Google Chrome 窗口的屏幕截图吗
- mysql - mysql 1111 无效使用组函数
- java - 如何在一个项目中使用不同的语言
- react-native - 一个合适的 RNN V2 结构是什么样的?
- android - 如何解决多个 D8 警告:
没有找到,它是默认或静态接口方法脱糖所必需的 ? - apache-kafka - Nifi 处理器(发布和消费 kafka)没有与 Ambari 平台上的 kafka 通信
- bash - Bash - For循环不适用于声明中的变量
- c# - MediatR NotificationHandler 触发并忘记
- python - 在每个文件合并后添加换行符
- c# - Net Core Identity 2.1 身份验证无法正常工作访问受保护的端点