ng-click 在父 div 也在子 div

Posted

技术标签:

【中文标题】ng-click 在父 div 也在子 div【英文标题】:ng-click in parent div also in child div 【发布时间】:2014-04-05 21:44:14 【问题描述】:

我有以下代码:

        <table class="table">
            <tr>
                <th>Name___</th>
            </tr>
            <tr ng-repeat="app in apps"
                ng-click="go('/editApp/' + plugin.name);">

                <td>
                    <span>app.name</span>
                </td>
                <td style="width: 100px;">
                    <i class="glyphicon glyphicon-pencil" 
                              ng-click="openPopup(app)"></i>
                </td>
            </tr>
        </table>

当我点击 OpenPopup 时,go() 方法也会触发,我该怎么做,如果我点击弹出窗口,弹出窗口就会触发?

【问题讨论】:

tr中删除ng-click 好吧,如果你点击一个子元素,你实际上也点击了它的父元素。这称为事件传播,特别是事件冒泡 【参考方案1】:

这个执行是因为你的&lt;td&gt;嵌套在&lt;tr&gt;中,并且点击首先触发openPopup()

然后解雇go()。您可以使用$event.stopPropagation() 停止事件传播到&lt;tr&gt;。 试试

        <table class="table">
        <tr>
            <th>Name___</th>
        </tr>
        <tr ng-repeat="app in apps"
            ng-click="go('/editApp/' + plugin.name);">

            <td>
                <span>app.name</span>
            </td>
            <td style="width: 100px;">
                <i class="glyphicon glyphicon-pencil" 
                          ng-click="openPopup(app);$event.stopPropagation()"></i>
            </td>
        </tr>
    </table>

【讨论】:

太棒了!效果很好。

以上是关于ng-click 在父 div 也在子 div的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS ng-click事件点击无效

AngularJS的ng-click阻止冒泡

CSS 效果 :hover::after 在子元素上 :hover 在父元素上

取消绑定 ng-click 以获取角度中的动态 dom 元素

如何从控制器内的事件访问范围?

angularjs中使用ng-repeat渲染页面,点击元素,如何知道点击的哪个元素