Jquery关闭父点击

Tom*_*lic 6 javascript jquery

我希望窗口仅在pop_up单击时关闭(而不是单击div内容).例如,单击背景图层会隐藏div.在下面的代码中,我不希望它#pop_up仅在"pop_up"上单击div内容bot时关闭.

我怎样才能做到这一点?

$("#pop_up").click(function() {
    $("#pop_up").hide();
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="pop_up">
  <div id="pop_up_content">
    <h1> world </h1>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Fab*_*sta 6

您所经历的是事件的冒泡和捕获行为.检查此答案什么是事件冒泡和捕获?.

简单的方法是将onClick附加到孩子并停止冒泡.

$("#pop_up_content").click(function(ev) {
   ev.preventDefault()
   ev.stopImmediatePropagation() // best to use to stop other event listeners from being called
});
Run Code Online (Sandbox Code Playgroud)


Ami*_*ein 3

您可以使用event单击的参数,并查看单击是否在另一个元素内部(或者是元素本身)

JSFiddle:https://jsfiddle.net/32mz2x3x/1/

$("#pop_up").click(function(event) {
      if ($(event.target).parents().andSelf().is('#pop_up_content')) {
        return 
    }
    $("#pop_up").hide();
});
Run Code Online (Sandbox Code Playgroud)

我曾经parents检查过您单击的位置是否在pop_up_content元素内部,我使用它andSelf是因为也许您单击#pop_up_content(而不是在元素内部)


更多信息:

  • 是的,就是这样,我早些时候试图做这样的事情,现在我看到我失败了!谢了哥们!高度赞赏! (2认同)