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)
  }
})

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

相关推荐
Autumn_ing1 小时前
Design.md生成UI怎么验收?举例运营后台的颜色、状态和数据核对
前端·ui·ai·设计系统·paico·ai生成ui·design.md
远离UE42 小时前
UE5 Substrate Thin Film 源码拆析
开发语言·javascript·ue5
keyipatience2 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
朱涛的自习室2 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
java1234_小锋4 小时前
【技术专题】HTML5 网页技术 - HTML5简介 & HTML5 文档结构
前端·html·html5
鶴哥只手遮天5 小时前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 1 章 项目全景:monorepo 架构与工程化体系
前端·vue.js·开源
流星。。方5 小时前
小团队官网SEO落地:前端语义化与静态生成的工程实践
前端·状态模式
用户530429765795 小时前
盘点危化品搬运诊断的6类工具与自处理边界判断
前端
curtain5 小时前
从古法编程到 Agent:我入行这两年,AI 改变了什么
前端·openai
zyfts5 小时前
10分钟自制Codex钉钉通知Skill:AI干完活自动钉钉提醒你
前端