为什么给父元素绑定事件之后return false可以阻止子元素的默认行为

为什么给父元素绑定事件之后return false可以阻止子元素的默认行为

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<style type="text/css">

a{

display: block;

background-color: red;

height: 200px;

}

</style>

<body id="#body">


<a href="www.baidu.com"></a>

</body>

<script type="text/javascript">

document.getElementById("#body").onclick=function(){

console.log("123");

return false;

}

</script>

</html>

给body绑定了click事件,return false;相当于阻止了body的默认行为,和阻止body事件冒泡。相当于同时设置了event.stopPropagation()和event.preventDefault()。但为什么他的子元素a也无法实现跳转了?


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,可以这么理解的。

继续加油,祝学习愉快~

好帮手慕粉 2020-05-10 13:06:22

同学你好,关于同学的问题回答如下:

1、同学前半部分理解的是正确的,相当于同时设置了event.stopPropagation()和event.preventDefault()。

2、在这里设置return false后,下级元素的事件将不会再被触发,所以将a标签的跳转行为也给禁止了。在这里不推荐同学使用return false,建议同学通过event.stopPropagation()实现:

http://img1.sycdn.imooc.com//climg/5eb78afe09eee29b05860117.jpg

祝学习愉快~

  • 提问者 王文辉 #1
    这么说的话,return false应该这么理解才对,想当于同时设置了event.stopPropagation()和event.preventDefault(),且会阻止子元素的事件触发。 因为冒泡是从子到父级阻止了,但这里把子元素的事件都阻止了
    2020-05-13 11:12:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师