我目前正在为一个人的祖先做一个简单的树视图。显示数据工作得很好。折叠也是由HTML元素本身处理的。每个树项目有3个操作按钮。
当单击这些按钮时,我不希望触发details
元素的toggle
事件。如何限制toggle
事件仅在单击3个按钮之外的按钮时发生,或者仅单击每个树项目上的黑色箭头?
<details *ngIf="tree" class="form-control mb-2 mt-2" open style="width: 100%; margin-left: 12.5px">
<summary>
{{tree?.name}} <i class="bi" [ngClass]="'bi-gender-' + tree?.sex.toLowerCase()"></i>
<div class="btn-group float-end">
<span class="mt-1">{{tree?.dateOfBirth}}</span>
<a [routerLink]="['/horses/detail', tree?.id]"
class="btn btn-sm">
<i class="bi bi-info-lg"></i>
</a>
<a [routerLink]="['/horses/edit', tree?.id]"
class="btn btn-sm">
<i class="bi bi-pencil"></i>
</a>
<a (click)="deleteHorse()"
class="btn btn-sm">
<i class="bi bi-trash"></i>
</a>
</div>
</summary>
<app-node [tree]="tree?.father"></app-node>
<app-node [tree]="tree?.mother"></app-node>
</details>
我在details
标记上找不到任何有关自定义切换和单击事件的信息。
1条答案
按热度按时间erhoui1w1#
我不使用 bootstrap,但你的问题可能是由按钮作为常规子元素('flow'的一部分)冒泡指针事件到其父元素
summary
引起的。没有你的CSS和运行的minimal reproducible example,我不可能发现这是真的。相反,我创建了一个符合您要求的普通代码替代方案,简单地说,我将
summary
元素作为relative
的父元素,并将absolute
定位DOB和按钮。CSS分为两个部分:“行为”和“布局”。
行为
summary
元素成为relative
父元素。summary
中创建了一个.content
元素,用于保存出生日期(.dob
)和按钮组(.btn-group
)。.content
元素被定位在summary
内的absolute
。details
创建了一个“stopper”类(.nop
),以便在没有更深级别的details
时禁用summary
pointer-events
。布局
“layout”CSS实际上只是在代码片段中模拟布局的演示代码。
片段