通过儿童点击父母点击
我有一个<div>
元素,它有另一个<div>
元素作为它的子元素。
我将ng-click
指令添加到父项,并且期望在单击该子项时不会被触发。 但是,它呢。
<div class="outer" ng-click="toggle()"> <div class="inner">You can click through me</div> </div>
为什么这样做,我怎么能避免它?
这是一个展示问题的JSFiddle
你必须取消事件传播,所以父元素的click事件不会被调用。 尝试:
<div class="outer" ng-click="toggle()"> <div class="inner" ng-click="$event.stopPropagation()">You can click through me</div> </div>
当你点击子元素时,它的事件被触发。 但它并不止于此。 首先触发子元素的click事件,然后触发父元素的click事件,依此类推。 这就是所谓的事件传播,要停止事件传播(触发父母点击事件),你必须使用上面的函数stopPropagation
。
工作示例
我添加了一些CSS填充,所以这个例子更清晰。 如果没有填充,则子元素将占据整个内部空间,并且无需单击父级,就不能单击父级。