javascript - 一次仅将选定样式应用于一个 div(不使用 jQuery)
问题描述
请你帮助我好吗。<span class="badge badge-light"><i class="fa fa-check-circle"></i></span>
当我单击带有 class="role-box" 的 div 时,我需要使其可见(最初它具有样式“可见性:隐藏”)。它应该以下列方式工作:当我单击标题为“Role-one”的 div 时,该 div 的徽章将可见,如果我单击标题为“Role-two”的 div,则该 div 的徽章“角色一” div 将被隐藏,“角色二” div 的徽章将可见。目前,如果我点击它们,它会显示所有 div 的徽章。下面是代码。
HTML:
<div class="col-6 col-md-4" *ngFor="let role of joblabels, index as ri">
<div class="role-box" id="{{ri}}" (click)="selectRole(ri)">
<span class="badge badge-light"><i class="fa fa-check-circle"></i></span>
<p class="role-type">{{ role.title }}</p>
</div>
</div>
TS:
joblabels = [
{title: 'Role-one'},
{title: 'Role-two'},
{title: 'Role-three'}];
selectRole(id) {
let badge = document.getElementById(id).childNodes;
if (badge[1]['style'].visibility === 'visible') {
badge[1]['style'].visibility = 'hidden';
}
else {
badge[1]['style'].visibility = 'visible';
} }
解决方案
您可以使用角度的 [ngStyle]。
有一个保存选中状态的变量
组件 TS:
selectedRole: any;
joblabels = [
{title: 'Role-one'},
{title: 'Role-two'},
{title: 'Role-three'}];
selectRole(title) {
this.selectedRole = title;
}
HTML:
<div class="col-6 col-md-4" *ngFor="let role of joblabels, index as ri">
<div class="role-box" id="{{ri}}" (click)="selectRole(role.title)">
<span class="badge badge-light" [ngStyle]="{'visibility':role.title === selectedRole ? '' : 'hidden' }"><i class="fa fa-check-circle"></i></span>
<p class="role-type">{{ role.title }}</p>
</div>
</div>
推荐阅读
- javascript - 处理 javascript 数组以在谷歌图表中使用(展平数组内的天数)
- reactjs - 如何将此js文件转换为打字稿?
- gekko - 为什么代码以“未找到解决方案”错误和“退出:收敛到局部不可行点。问题可能不可行”而终止?
- r - 如何在 R 中使用单个命令仅对单个条件进行 pivot_wider
- xamarin - 在 xamarin ios 的 bin/obj 文件夹中生成的 project.ios.exe 文件
- c# - 为什么我无法在 Visual Studio 2019 中选择目标框架?
- java - Maven 构建在不同的主机上选择不同的 Jackson artefacts 版本
- spring - 春季批次的活力探针和就绪探针
- html - 如何清除或消失使用 vue.js 自动保存在本地存储中的数据
- mongodb - 在不知道其命名空间的情况下重命名 mongo 集合