當我點擊錨標記onClick
函數被調用,但其子元素onclick函數也調用它。我想阻止這個,如果父元素被點擊,那麼爲什麼它的子元素單擊它。Angular 2 - 當點擊父元素時防止點擊孩子?
下面是代碼:
<li *ngFor = "let category of categories">
<a href="javascript:void(0);" (click)="toggle($event);">
<span class="ah-pull-left" style="padding: 7px 10px;font-size: 14px;">
<span class="ah-hexa">C</span>
</span>
<span class="ah-pull-left">{{category.title}}</span>
<span class="ah-pull-right ah-sidebar-down-arrow" *ngIf = "category.submenu.length > 0"><i class="fa fa-angle-down" aria-hidden="true"></i></span>
</a>
<div id="{{category.id}}" class="ah-sidebar-sub-menu" *ngIf = "category.submenu">
<ul>
<li *ngFor = "let subcategory of category.submenu">
<a href="{{subcategory.link}}">
<span class="ah-pull-left" style="font-size: 14px;">
<span class="ah-hexa">{{subcategory.title.charAt(0)}}</span>
</span>
<span class="ah-pull-left">{{subcategory.title}}</span>
</a>
</li>
</ul>
</div>
</li>
.TS
toggle(e) {
if(e.target || e.srcElement || e.currentTarget){
console.log(e.target.parentNode)
}
}
輸出在瀏覽器控制檯窗口:
點擊事件被註冊在實際點擊的元素上。但它會向上冒泡,直到找到一個具有事件處理程序的元素。這就是爲什麼'event.target'是子元素的原因。如果你做'onClick($ event,myElement.id)',你仍然會看到子元素。不知道'#myElement'在ng-for循環內工作。然後你可以做'#myElement'和'onClick(myElement)'。不要以爲你需要'id =「{{category.id}}」'部分,除非你將它用於別的東西。 –