美文网首页
层叠组件 click事件的处理

层叠组件 click事件的处理

作者: V_Jan | 来源:发表于2021-06-11 15:04 被阅读0次

    需求背景:
    点击绿色框,要跳转到Anthony这个客户的详情页面。
    点击右上角开关,将这Anthony放入disabled列表里。

    问题是,当我把click事件放在绿色div层,开关按钮的点击事件会失效。

    image.png

    问题分析,绿框里的点击事件都被div的click 事件监听并消费了。 导致开关事件的监听无效。
    解决办法(方法很多,这里只说一种),将绿框和开关置于同一级层,这样他们的点击事件就是独立的。利用相对位置,来处理他们的位置问题,让他们看起来是嵌套的。

    <div @click.stop.prevent="routerTo(progressBoard)" style="position:relative">
        <div>
             <h4>Anthony Hazard</h4> 其余省略
        </div>
    </div>
    <el-switch
                    style="position: absolute; top:0; right:7%"
                    v-model="value"
                    active-color="#13ce66"
                    inactive-color="#ff4949">
    </el-switch>
    

    而如果将开关换成button,就没这么复杂, button嵌套在div里。只要阻止按钮的点击事件冒泡即可,这里放比较完整的代码,可以感受下冒泡层级。

    <div class="progress-detail d-flex" @click.stop.prevent="routerTo(progressBoard)" >
          <div class="d-flex flex-wrap ">
              <div class="col-12 d-flex px-md-0 justify-content-between">
                    <h4 class="mb-0">
                          {{progressBoard.name}}
                    </h4>
                    <el-button @click.stop="test">cancel</el-button>
              </div>
           </div>
    </div>
    

    相关文章

      网友评论

          本文标题:层叠组件 click事件的处理

          本文链接:https://www.haomeiwen.com/subject/ilqveltx.html