繁体   English   中英

jQuery-div中的div,如何在单击内部时仅运行1 click事件

[英]jQuery - div inside div, how to run only 1 click event when inside has been clicked

我在div内有一个div。 如果内部div已被单击(closeme div),则我不想运行其他div(容器div)的click事件。 我怎样才能做到这一点 ?

html

<div id="container">
content
<div id="closeme"></div>
</div>

js

$(document).on('click', '[id="container"]' ,function(){
alert("I am clicked");
}

$(document).on('click', '[id="closeme"]' ,function(){
alert("I am clicked");
}

 $(document).on('click', '[id="container"]', function(e) { e.stopPropagation(); alert("I am container"); }) $(document).on('click', '[id="closeme"]', function(e) { e.stopPropagation(); alert("I am closeme"); }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="container"> content <div id="closeme">qwe</div> </div> 

使用event.stopPropagation()

说明:防止事件使DOM树冒泡,从而防止任何父处理程序收到该事件的通知。

如果是否测试目标是否为#closeme

 $(document).on('click', '[id="closeme"]', function(event) {
     if ($(event.target).is('[id="closeme"]')) {
        alert("coloseme clicked");
     }
    });

就像其他人刚刚提到的那样。 您必须停止事件传播。 这是一个完整的工作示例。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
  <div id="container">
    content
    <div id="closeme">Inner Div</div>
  </div>
</body>
  <script>
    $(document).on('click', '[id="container"]', function(event) {
      alert("container clicked");
    });

    $(document).on('click', '[id="closeme"]', function(event) {
      event.stopPropagation();
      alert("coloseme clicked");
    });
  </script>
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM