一、el-tooltip根据条件控制显示(多层循环情况)
<div class="box" v-for="(item, index) in detailList" :key="index">
<div class="title">
<i class="el-icon-document"></i>
<p>{{ item.elementName }}</p>
</div>
<el-row class="item" v-for="(cItem, cIndex) in item.children" :key="cIndex">
<el-col :span="12">
<div class="name">
<el-tooltip effect="dark" :content="cItem.elementName" placement="bottom" :popper-class="isShowTooltip ? 'hide-tooltip' : ''">
<span :class="`showMenuClass_${cItem.elementId}`" @mouseenter.stop.prevent="onMouseOver(cItem.elementId, 'name')" @mouseleave.stop.prevent="isShowTooltip = true">{{ cItem.elementName }}</span>
</el-tooltip>
</div>
</el-col>
<el-col :span="8">
<span>
{{ cItem.fundCount }}
</span>
</el-col>
<el-col class="option" :span="4">
<el-button>编辑</el-button>
</el-col>
</el-row>
</div>
setup() {
const state = reactive({
isShowTooltip: true,
showMenuClass: '',
})
function onMouseOver(id: string) {
state.isShowTooltip = true;
let data = null;
state.showMenuClass = `showMenuClass_${id}`;
data = $(`.${state.showMenuClass}`)[0];
let parentWidth = (data.parentNode as any).offsetWidth;
let contentWidth = data.offsetWidth;
clearTimeout(timer);
timer = setTimeout(() => {
if (contentWidth > parentWidth) {
state.isShowTooltip = false;
}
}, 300);
}
}
.hide-tooltip {
visibility: hidden !important;
}