阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别

1.event.stopPropagation()方法

这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开。

//js:
handleParentClick=()=>{
  console.log('这是父层div点击事件');
};
handletClick=()=>{
  console.log('这是子层div点击事件');
}
render(){
  return(
  <div onClick={this.handleParenttClick}>
    点击父div
    <div onClick={this.handleClick}>
      点击子div
    </div> 
  </div>
  )
}

 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在上面的代码中,有两个点击事件。当我们点击点击父div时,会触发handleParenttClick方法,输出这是父层div点击事件这句话,当我们点击点击子div时,会先触发handletClick方法,再触发handleParenttClick方法,所以控制台会同时输出这是子层div点击事件这是父层div点击事件。但是在正常的前端开发过程中,当用户点击点击子div时,我们希望只触发handleClick方法,而不希望触发handleParentClick方法,这时候,我们就会用上stopPropagation方法:

handletClick=(event)=>{
  event.stopPropagation();
  console.log('这是子层div点击事件');
}

 
 
 
 
  • 1
  • 2
  • 3
  • 4
2.event.preventDefault()方法

这是阻止默认事件的方法,调用此方法,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素。
以上面的代码为例,当我们在handleClick方法中加上调用这个方法:

handletClick=(event)=>{
  event.preventDefault();
  console.log('这是子层div点击事件');
}

 
 
 
 
  • 1
  • 2
  • 3
  • 4

这时候我们再去点击点击子div时,只会触发handleParentClick方法,而不会触发handleClick方法,即控制台只会输出这是父层div点击事件

3.return false ;

这个方法会同时阻止事件冒泡和阻止默认事件,写上此代码,连接不会被打开,事件也不会传递到上一层的父元素;可以理解为return false就等于同时调用了event.stopPropagation()event.preventDefault()

handletClick=(event)=>{
 return false  ;
 console.log('这是子层div点击事件');
}

 
 
 
 
  • 1
  • 2
  • 3
  • 4

这时候我们再去点击点击子div时,既不会会触发handleParentClick方法,也不会触发handleClick方法,即控制台不会有输出。

参考:阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值