问答详情
源自:6-2 jQuery事件对象的属性和方法

为什么会冒泡?

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
    .left div,
    .right div {
        width: 500px;
        height: 100px;
        padding: 5px;
        margin: 5px;
        float: left;
        border: 1px solid #ccc;
    }
    
    .left div {
        background: #bbffaa;
    }
    
    .right div {
        background: yellow;
    }
    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
    <h3>事件对象的属性与方法</h3>
    <div class="left">
        <div id="content">
            外层div元素
            <br />
            <span style="background: silver;">内层span元素</span>
            <br /> 外层div元素
        </div>
        <br />
        <div id="msg"></div>
    </div>
    <script type="text/javascript">
    //为 <span> 元素绑定 click 事件  
    $("span").click(function() {
        $("#msg").html($("#msg").html() + "<p>内层span元素被单击</p>");
    });
    //为 Id 为 content 的 <div> 元素绑定 click 事件  
    $("#content").click(function(event) {
        $("#msg").html($("#msg").html() + "<p>外层div元素被单击</p>");
        event.stopPropagation(); //阻止事件冒泡  
    });
    //为 <body> 元素绑定 click 事件  
    $("body").click(function() {
        $("#msg").html($("#msg").html() + "<p>body元素被单击</p>");
    });
    </script>
</body>

</html>

提问者:1234323181 2016-11-18 17:09

个回答

  • 人土土zzzzz
    2016-11-18 20:05:08
    已采纳

    冒泡是浏览器的属性,你理解成规定就好,不阻止的话默认会一级一级往上传,看#content的click事件函数里写了stopPropagation阻止冒泡,所心上一级的body的click才不会被触发,删掉这句的话,点击span后所有的click事件都会被触发。