当前位置: 首页 > news >正文

根据现有html里的元素上面动态创建el-tooltip组件并显示的几种方式

       1、 在这个示例中,我们创建了一个 ref 引用来指向我们想要附加 Tooltip 的 DOM 元素。然后在 onMounted 生命周期钩子中,我们创建了 Tooltip 组件的实例,并将其挂载到一个新创建的 DOM 元素上。我们还在触发元素上添加了 mouseentermouseleave 事件监听器来控制 Tooltip 的显示和隐藏。

<template><div class="tooltip-trigger" ref="triggerEl">Hover me</div>
</template><script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue';
import { ElTooltip } from 'element-plus';const triggerEl = ref(null);
let tooltipInstance = null;onMounted(() => {if (triggerEl.value) {// 创建 tooltip 组件实例tooltipInstance = defineComponent({template: `<div><el-tooltip :content="content" placement="top"><span ref="tooltipTrigger"></span></el-tooltip></div>`,components: { ElTooltip },data() {return {content: 'This is a tooltip'};},mounted() {// 将 tooltip 的触发元素设置为动态创建的 spanthis.$refs.tooltipTrigger.appendChild(triggerEl.value);}});// 挂载到触发元素上const mountNode = document.createElement('div');triggerEl.value.appendChild(mountNode);tooltipInstance = createApp(tooltipInstance).mount(mountNode);// 监听鼠标事件来控制显示和隐藏triggerEl.value.addEventListener('mouseenter', () => {tooltipInstance.component.proxy.$refs.tooltip.content = 'Updated content';});triggerEl.value.addEventListener('mouseleave', () => {// 隐藏 tooltiptooltipInstance.component.proxy.$refs.tooltip.doDestroy();});}
});onBeforeUnmount(() => {if (tooltipInstance) {// 销毁 tooltip 实例tooltipInstance.unmount();}
});
</script><style>
.tooltip-trigger {cursor: pointer;
}
</style>

2、下面通过找到一个 容器来进行动态创建虚拟节点的方式

 // 假设属性值存储在变量中nextTick(() => {const attributeValue = element.id;// 构建CSS选择器字符串const selector = `[data-element-id="${attributeValue}"]`;const container = document.querySelector(selector);console.log("container=",container)// 创建一个不可见的触发元素const trigger = document.createElement('div');trigger.style.display = 'none';container.appendChild(trigger);// 创建一个el-tooltip的虚拟节点const tooltipVNode = createVNode(ElTooltip, {content: nodeHtml.value,placement: 'top',offset: 100, // 可以根据需要调整偏移量//reference: trigger, // 使用触发元素的引用visible: true, // 设置为可见});// 使用render函数将虚拟节点渲染到容器元素上render(tooltipVNode, container);     })

http://www.lryc.cn/news/447382.html

相关文章:

  • 【C++篇】迈入新世界的大门——初识C++(上篇)
  • 啥?Bing搜索古早BUG至今未改?
  • ValueError: Out of range float values are not JSON compliant
  • 【架构】NewSQL
  • 禁止吸烟监测系统 基于图像处理的吸烟检测系统 YOLOv7
  • 《中国工程科学》
  • 碳钢液动紧急切断阀QDY421F-16C DN200
  • 【C++】红黑树的封装——同时实现map和set
  • Tableau|一入门
  • Android 12系统源码_输入系统(三)输入事件的加工和分发
  • 【Elasticsearch系列廿二】特殊参数
  • Java笔试面试题AI答之设计模式(2)
  • 54 循环神经网络RNN_by《李沐:动手学深度学习v2》pytorch版
  • 数据仓库-数据质量规范
  • PostgreSQL 17 发布了!非常稳定的版本
  • 【Python】执行脚本的时,如何指定运行根目录,而不是指定脚本的父级目录
  • JVM(HotSpot):程序计数器(Program Counter Register)
  • 等保托管怎么样,流程是什么样的?
  • 【HTML】img标签和超链接标签
  • 智能PPT行业赋能用户画像
  • 学习C++的第七天!
  • Java编程必备:五大高效工具与框架
  • 现代桌面UI框架科普及WPF入门1
  • in和like性能对比
  • Redis|基础学习
  • 手把手教你在Linux上构建Electron
  • 力扣【448-消失的数字】【数组-C语言】
  • 面试题:排序算法的稳定性?(文末有福利)
  • 在Jdk1.8中Collectors和Comparator使用场景
  • linux-性能优化命令