为什么单击<ul>元素会说其event.srcElement是<li>

时间:2019-01-23 05:23:46

标签: javascript html angularjs

           <div class="nav">
                <ul>
                    <li ng-repeat="navigation in vm.navigation.entries" ng-click="vm.navigationSelect(navigation)">
                        <a scrolltop ng-if="!navigation.desktopOnly">
                            {{navigation.title}}
                            <span class="glyphicon glyphicon-chevron-down buttonchevron"
                                  ng-if="navigation.subNav"></span>
                            <ul class="sub-nav">
                                <li ng-repeat="children in navigation.childEntries" ng-click="vm.subMenuClickHandler($event)">
                                    {{children.title}}
                                </li>
                            </ul>
                        </a>
                    </li>
                </ul>
            </div>

我在父节点(<ul />)上进行了ng单击,但是将其向下移到<li />)上,以查看行为是否发生了变化-并没有。问题出在第二个<ul />subMenuClickHandler($event)处理程序上。当我单击<ul />展开列表时, last <li />项触发事件。当我检查event.srcElement以查看其来源时,它说<li />

1.<ul Title>
 a.<li child title/>
 b.<li child title/>

2.<ul Title>
 a.<li child title/>
 b.<li child title/>

当我单击“标题2”以展开子标题时,b.child被解雇。有什么想法吗?

这是我尝试过的:
1. $ event.stopPropagation()
2. .preventDefault()
3.检查目标(在合成事件中不存在,在这种情况下为AngularJs)
4.检查currentTarget-这是空的
5.对此有两个eventHandlers,我已经证实这不是问题。这仅在<ul />呈现的两个类别之一中发生。而且它始终是触发的最后一个列表项。

0 个答案:

没有答案