【Vue & JavaScript & Css】Multiple class name duplication problem(js/jq原生导致多个类名重复问题)

简介: 【Vue & JavaScript & Css】Multiple class name duplication problem(js/jq原生导致多个类名重复问题)

组件 s-select

<template>
  <div class="custom-dropdown">
    <button class="dropdown-toggle">选择一个选项 <i class="up-icon"></i></button>
    <ul class="dropdown-menu">
      <li>选项</li>
    </ul>
  </div>
</template>
<script>
import './index.css';
import { showSelectItem } from './dom.js';
export default {
  name: 's-select',
  mounted() {
    showSelectItem();
  },
};
</script>

dom.js

export const showSelectItem = () => {
  let selectState = false;
  $('.dropdown-toggle').on('click', function() {
    $('.dropdown-menu')[0].style.display = selectState ? 'none' : 'block';
    selectState = !selectState;
  });
};

功能是 点击button,会下拉出一个 select-item 下拉框,结果运行时,有多个 <s-select></s-select>, 所以就会有很多 className 重复,导致成为一次性组件

进行修改

使用 Vue 事件绑定操作组件的 ref 属性中的 style

使用ref属性可以为DOM元素或组件指定一个唯一的引用标识符

修改后的代码

<template>
  <div class="custom-dropdown">
    <button class="dropdown-toggle" @click="toggleDropdown">
      选择一个选项 <i class="up-icon"></i>
    </button>
    <ul class="dropdown-menu" ref="dropdownMenu">
      <li>选项</li>
    </ul>
  </div>
</template>
<script>
import './index.css';
export default {
  name: 's-select',
  mounted() {
    this.showSelectItem();
  },
  methods: {
    toggleDropdown() {
      this.$refs.dropdownMenu.style.display = this.$refs.dropdownMenu.style.display === 'none' ? 'block' : 'none';
    },
    showSelectItem() {
      this.$refs.dropdownMenu.style.display = 'none';
    }
  }
};
</script>

Vue与原生JavaScript之间存在一些差异,虽然在某些情况下仍然可以使用原生JavaScript进行DOM操作,并不是极力不推荐

如果想在 Vue 中实现以上类似的功能,可在 className 中使用 hash code…

相关文章
|
12月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
842 24
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
884 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
785 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
320 32
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1231 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
662 33
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
303 24