为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会冒泡?

<!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>

正在回答

2 回答

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

0 回复 有任何疑惑可以回复我~
#1

1234323181 提问者

是不是事件都会冒泡
2016-11-19 回复 有任何疑惑可以回复我~
#2

人土土zzzzz 回复 1234323181 提问者

原生事件应该都是这样,建议你看Amy老师的《DOM事件探秘》,第一章事件流里面有讲到事件冒泡和事件捕获,不同浏览器的事件流可能不一样。
2016-11-20 回复 有任何疑惑可以回复我~
#3

1234323181 提问者 回复 人土土zzzzz

谢谢!
2016-11-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么会冒泡?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信