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

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

相关推荐
shawxlee1 小时前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
用户059540174461 小时前
把记忆存储的回归测试从手工换成 Playwright + GitHub Actions,线上缺陷降低 80%
前端·css
触底反弹1 小时前
🚀 从 DOM0 级到 React 合成事件:前端事件监听的 20 年演进史
前端·react.js·面试
kyriewen2 小时前
我给前端项目的接口请求套了6层保护——才发现以前一直在裸奔
前端·javascript·面试
颜酱2 小时前
04 | 召回前置准备:搭好召回所需的四个数据库
前端·人工智能·后端
郝亚军3 小时前
如何安装webstorm、Node.js和vue CLI
前端·javascript·vue.js
IT_陈寒3 小时前
React的useEffect依赖项把我坑惨了
前端·人工智能·后端
东方小月4 小时前
从零开发一个Coding Agent:monorepo项目搭建
前端·后端·node.js
葬送的代码人生4 小时前
别再让 AI 瞎写代码了!Vibe Coding 三步法教你写出靠谱代码
前端·设计模式·架构
Shirley~~4 小时前
Code-Review-Graph:面向 AI 辅助代码审查的结构化上下文引擎
前端·ai编程