JavaScript —— 阻止事件冒泡

本文探讨了JavaScript中的事件冒泡现象,通过示例展示了事件从最内层元素到最外层元素的传递过程。同时,讲解了如何阻止事件冒泡,包括使用`event.stopPropagation()`和`return false`。此外,还提到了`event.preventDefault()`的作用,即阻止默认行为而不阻止事件冒泡。这些知识对于理解和控制JavaScript事件处理至关重要。
<div id="one" onclick="alert('我是最外层');">
    <div id="two" onclick="alert('我是中间层!')">
        <a id="three" href="http://www.baidu.com" onclick="alert('我是最里层!')">点击我</a>
    </div>
</div>

比如上面这个页面,分为三层:one是第外层,two中间层,three是最里层;
他们都有各自的click事件,最里层a标签还有href属性。

“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层---->然后再链接到百度.

这就是事件冒泡,本来我只点击ID为three的标签,但是确执行了三个alert操作。
事件冒泡过程(以标签ID表示):three----> two----> one 。从最里层冒泡到最外层。



如何阻止事件冒泡

1. event.stopPropagation();

<script type="text/javascript">
    $(function() {
        $("#three").click(function(event) {
            event.stopPropagation();
        })
    })
<script>

再点击“点击我”,会弹出:我是最里层,然后链接到百度


2. return false

$(function() {
  $("#three").click(function(event) {
    return false;
  })
})

再点击“点击我”,会弹出:我是最里层,但不会执行链接到百度页面



由此可以看出:
event.stopPropagation(); 阻止了事件冒泡,但是不能阻止默认行为(它就执行了超链接的跳转)。
return false; 阻止了事件冒泡,也阻止了默认行为(它没有执行超链接的跳转)


event.preventDefault();
如果把它放在头部A标签的click事件中,“点击我”。
会发现它依次弹出:我是最里层---->我是中间层---->我是最外层,但最后却没有跳转到百度
它的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值