事宜冒泡 == 得与失

本日想聊一聊js的事宜冒泡!

在项目中遇到了一个很新鲜的题目:
父元素点击时,让它的子元素弹出一个捏造的挑选框;
在挑选框完成挑选后,封闭它;
 <div class="msg-list clearfix sex">
    <p class="name-tip">性别</p>  
    <div class="name">
      <p class="sex-val">男</p>
      <div class="sex-select"  id="sex">
        <p class="sex-active">男</p>
        <p>女</p>
      </div>
  </div> 
  (注:偏重关注它的层级关联,只是一个简朴完成性别切换的功用)

这时候一个诡异的征象发生了:

    不管怎样点击都不会让它完成隐蔽,是代码写错了。逻辑没见效???
    然则并没有,细细扒一扒,发如今谷歌下谁人displace:block;
    没有移除,在消逝的那一霎时,又涌现了,时候很短。
    
    倏忽想起来js中的点击事宜是会向上级通报的,(称事宜冒泡)
    那让我们再来理一下逻辑:
    父元素点击后,弹起子元素的挑选框,在子元素点击后,封闭挑选框,
    然后点击事宜向上通报,传给父元素,激活父元素的点击事宜,完了
    又弹起子元素的挑选框。

好了,既然缘由已晓得,那就停止事宜冒泡不就得了,网上许多要领:
笔者这里直接在子元素点击事宜函数的最后面加一句: return false;

    固然事宜冒泡实在也是有一些优点的:
    这个挑选框实在照样有一些题目,比方点击别的处所我想让他消逝,
    然则我又能预判到用户下一个会点击谁人元素呢,人家把你挑选框
    激活了,又不肯定会挑选,又可能会点击别的处所的对吧!所以只
    是挑选隐蔽,照样有肯定题目的。

那末事宜冒泡这时候就有用了,一切的点击事宜都邑通报到根元素,那末
我们只需要在根元素加一个点击事变去隐蔽它就ok了。

     $(document).click(function(){
         //隐蔽弹出div
     })
    
    
    原文作者:绯色琉璃
    原文地址: https://segmentfault.com/a/1190000013158225
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞