Javascript 角度-检测单击背景div,但不在其中的div上

Javascript 角度-检测单击背景div,但不在其中的div上,javascript,css,angularjs,Javascript,Css,Angularjs,在上,在公文包页面中,我试图模拟一个弹出div,提供有关您单击的项目的更多信息。为了返回弹出窗口,我添加了一个ng单击,因此当您单击主公文包弹出窗口容器时,弹出窗口将被删除 是否可以只让公文包弹出div中暴露的部分(不在照片或描述白框上)在单击后移除主div?因此,您可以自由单击图片和白色框 <div class="portfolio-pop-up container" ng-click="losePortfolioFocus()"> <div clas

在上,在公文包页面中,我试图模拟一个弹出div,提供有关您单击的项目的更多信息。为了返回弹出窗口,我添加了一个ng单击,因此当您单击主公文包弹出窗口容器时,弹出窗口将被删除

是否可以只让公文包弹出div中暴露的部分(不在照片或描述白框上)在单击后移除主div?因此,您可以自由单击图片和白色框

<div class="portfolio-pop-up container" ng-click="losePortfolioFocus()">
            <div class="row">
                <div class="col-xs-12">
                    <img class="portfolio-image portfolio-image-popup" src="{{portfolioImageClass}}">
                </div>
                <div class="col-xs-12 pop-up-container">
                    <div class="pop-up-row">
                        <div class="col-xs-9" style="background: red">
                            <h1>
                                {{portfolioTitle}}
                            </h1>
                            <p>
                                {{portfolioDescription}}
                            </p>
                        </div>
                        <div class="col-xs-3" style="background: cyan">
                             <a href="{{portfolioLink}}">Click me</a>
                             <div ng-repeat="tech in portfolioTech">
                                {{tech}}
                             </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
CSS


任何帮助都将不胜感激,如果需要,可以发布更多css或代码

我建议您从事件目标爬升事件链,并检查您的
弹出式容器
是否在其中。通过这种方式,您将有一种方法来区分弹出窗口中的点击和弹出窗口中的点击。

我建议您从事件的目标爬上事件链,并检查您的
弹出窗口容器是否在其中。这样,您就可以区分弹出窗口中的单击和弹出窗口中的单击。

您可以在包装弹出窗口内容的元素上停止传播
单击事件,如下所示:

<div class="portfolio-pop-up container" ng-click="losePortfolioFocus()">
  <div class="row" ng-click="$event.stopPropagation()">
  ...
  </div> 
</div>

...

这样,弹出窗口内的单击将不会触发
losePortfolioFocus()
处理程序。

您可以停止包装弹出窗口内容的元素上的
单击事件的传播,如下所示:

<div class="portfolio-pop-up container" ng-click="losePortfolioFocus()">
  <div class="row" ng-click="$event.stopPropagation()">
  ...
  </div> 
</div>

...

这样,弹出窗口内的单击将不会触发
losePortfolioFocus()
处理程序。

$event
传递到您的点击事件中,并检查
目标
是否匹配,或者是否将弹出容器与背景放在同一容器中。将
$event
传递到点击事件中,并检查
目标
是否匹配,或者不将弹出容器与背景放在同一容器中。这起到了作用很好,谢谢!尽管我认为我应该研究一下事件链,弄清楚它为我自己做了什么。谢谢:)这个很好用,谢谢!尽管我认为我应该研究一下事件链,弄清楚它为我自己做了什么。谢谢:)
<div class="portfolio-pop-up container" ng-click="losePortfolioFocus()">
  <div class="row" ng-click="$event.stopPropagation()">
  ...
  </div> 
</div>