<div @click='opendetail(item)'>
<span @click='opensubdetail(subitem)'>
CODEXXX
</span>
</div>
上边的写法,点div的任何地方,包括点span(该span也属于div范围了),结果只有item被点击。原因是opensubdetail(subitem)实际也收到了事件请求。但是事件到分发到底部后会继续往上冒泡,结果响应的还是opendetail(item)
最终到只opensubitem事件无法被处理。
修改如下
<div @click='opendetail(item)'>
<span @click.stop='opensubdetail(subitem)'>
CODEXXX
</span>
</div>
跟span的事件改为 @click.stop就好了,原因是stop的意思是阻止冒泡,就是当opensubdetail收到事件后,不再往上冒泡了!!
如果是checkbox需要防止冒泡,还需要给该checkbox套上一层div来实现,
<div @click.stop="">
<el-checkbox @change=''>
</el-checkbox>
</div>