对于每个td表中的元素我有一个附加的 ng-click。以下是每个表格单元格的(简化的)html:
<td ng-click="cellClicked($event)">
<span ng-if="!cellEdit">{{event.eventName}}</span>
<input type="text" ng-if="cellEdit" ng-model="event.eventName">
</td>
我的(简化的)ng-click 函数:
scope.cellClicked = function (event) {
rowScope.cellEdit = true
angular.element(event.target).find('input').focus()
}
我的目标是:
- 用户单击表格单元格
- 单元格更改为“编辑模式”
- 将重点放在input元素位于td.
现在只要用户点击就可以工作位于 td 元素内,但不在 span 元素上:
console.log(angular.element(event.target)) #--> [td...] (as desired)
但是,如果用户单击 td 中的 span 元素:
console.log(angular.element(event.target)) #--> [span...]
在此用例中,分配焦点不起作用。我希望访问的父元素span做类似的事情:
angular.element(event.target.closest('td'))
or
angular.element(event.target.parentNode)
但是当元素通过 $event 传递并访问时,就会出现没有父上下文的情况。
我怎样才能:
- 防止点击span元素触发td的 ng-click
- 单击时span元素通过它的 html 父元素
改变:
angular.element(event.target)
to:
angular.element(event.currentTarget)
解决了我的问题。
在我看来使用事件.currentTarget http://www.w3schools.com/jsref/event_currenttarget.asp优先于事件目标 http://www.w3schools.com/jsref/event_target.asp在大多数使用情况下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)