elementui全局给select option添加title属性

场景

有天边上的同事问了我一个问题,示例如下,有个数据特别长,导致下拉部分被横向撑大。希望在全局对所有的option进行处理,按照select的宽度,超出隐藏。

处理

方式一

第一眼看过去直接修改源码好了,修改一下样式,再配合patch-package做一个补丁包即可。

方式二

转念一想,要么直接覆盖原有的el-option组件呗。拷贝option.vue文件到本地,按要求修改完成后,将其注册为全局组件,保持命名一致即可

方式三

添加一个鼠标事件监听,手动添加title属性(有一丢丢延迟)

js 复制代码
document.addEventListener('mouseenter', e => {
  var event = e || window.event;
   var target = event.target || event.srcElement;
   if (target.className.indexOf('el-select-dropdown__item') > -1) {
     target.setAttribute("title", target.children[0].innerHTML);
   }
 }, true)

方式四

同事看了一眼说这几种方法不够优雅,有什么更高大上点的处理方式吗?我想了一下,行吧,直接掏箱底。

element-ui源码上看,el-option绑定的是currentLabel,想要全局处理,那直接扩展一个功能吧

示例如下

js 复制代码
import Vue from 'vue'
import ElementUI from 'element-ui';

Vue.component('el-option', {
  extends: ElementUI.Option,
  mounted(){
  	// 当option挂载时,设置一个title属性
    this.$el.setAttribute('title',this.currentLabel)
  }
})

再加个样式,看一下效果,完美解决

相关推荐
小鱼咕噜咕噜4 分钟前
Element UI的el-upload文件上传与ZIP文件解压上传
javascript
labixiong5 分钟前
z-index: 99999 输给 z-index: 2?原生弹窗的 Top Layer 排位战:后进者居上、看得见却点不着
前端·html
deli0076 分钟前
CSS 渐变生成器:拖两个颜色直接给代码,做按钮背景不用手写
前端
陈拉斯7 分钟前
上线一个多人扫码网页娱乐工具,我在并发、SEO、PWA 和打包脚本上踩的 8 个坑
javascript
芳心粽伙饭12 分钟前
HTML第八章 表单标签
前端·html
Darling噜啦啦21 分钟前
从 SSE 到 LLM 流式输出:搞懂前端实时通信的两种姿势
前端·后端·llm
10年前端老司机32 分钟前
别卷CRUD了!前端用Next.js+LangChain.js,低成本冲进AI高薪赛道
前端·langchain·next.js
二进制漫游记36 分钟前
ECharts 从入门到实战|前端数据可视化完整教程
前端·信息可视化·echarts
weixin_4407305038 分钟前
pytest结合allure生成html测试报告(step、story、severity、screenshot)
前端·html·pytest·allure报告
星月日44 分钟前
前端上手后端起手式
前端·后端