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

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

相关推荐
学以智用5 分钟前
Vue 3 组件完全指南
前端·vue.js
重庆穿山甲6 分钟前
Java开发者的大模型入门:AgentScope Java组件全攻略(一)
前端·后端
LawrenceLan11 分钟前
36.Flutter 零基础入门(三十六):StatefulWidget 与 setState 进阶 —— 动态页面必学
开发语言·前端·flutter·dart
ego.iblacat12 分钟前
Web 技术与 Nginx 网站环境部署
运维·前端·nginx
ricky_fan12 分钟前
(已解决)安装openclaw龙虾[特殊字符]npm权限问题EACCES
前端·npm·node.js
TE-茶叶蛋13 分钟前
小程序协同编辑实战:从 Yjs 到纯 JavaScript 的重构之路
javascript·小程序·重构
专业流量卡14 分钟前
让小龙虾给我写文章
前端
技术人生黄勇16 分钟前
微信接入|企业微信官方插件支持 OpenClaw 3步快速接入(实操版)
java·前端·人工智能·微信·企业微信
....49216 分钟前
修复 Element Plus (Vue3) 输入框获取焦点时边框消失的问题
javascript·vue.js·ecmascript
倔强的石头_17 分钟前
MySQL 兼容性深度解析:从内核级优化到“零修改”迁移工程实践
前端·数据库