首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vue bind点击添加活动类(并从最后一个中删除)

在Vue中,你可以使用v-bind:class(或简写为:class)来动态地绑定一个或多个类名。如果你想要在点击时添加一个活动类,并从最后一个元素中删除它,你可以通过维护一个状态来实现这个功能。

以下是一个简单的例子,展示了如何在Vue 3中实现这个功能:

代码语言:txt
复制
<template>
  <div>
    <!-- 循环渲染列表项,并为每个项绑定点击事件 -->
    <div
      v-for="(item, index) in items"
      :key="item.id"
      :class="{ active: activeIndex === index }"
      @click="setActive(index)"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    // 假设有一个活动项的索引
    const activeIndex = ref(null);
    // 假设有一个活动项的数组
    const items = ref([
      { id: 1, text: 'Item 1' },
      { id: 2, text: 'Item 2' },
      { id: 3, text: 'Item 3' },
      // ...更多项
    ]);

    // 设置活动项的函数
    function setActive(index) {
      activeIndex.value = index;
    }

    return { activeIndex, items, setActive };
  }
};
</script>

<style>
.active {
  /* 定义活动类的样式 */
  background-color: yellow;
}
</style>

在这个例子中,我们使用了Vue 3的Composition API。activeIndex是一个响应式引用,用来跟踪当前活动的项的索引。:class指令用于动态绑定类名,当activeIndex等于当前项的索引时,active类会被添加到该项上。

点击任何一个列表项时,setActive函数会被调用,并更新activeIndex的值。这样,只有当前点击的项会有active类,而其他项则不会有。

如果你想要在添加新活动项的同时从最后一个项中删除活动类,你可以在setActive函数中添加逻辑来处理这个需求。例如:

代码语言:txt
复制
function setActive(index) {
  // 如果当前活动项不是最后一个,则将其设置为非活动状态
  if (activeIndex.value !== null && activeIndex.value !== items.value.length - 1) {
    // 这里可以添加逻辑来移除最后一个项的活动类,如果需要的话
  }
  // 设置新的活动项
  activeIndex.value = index;
}

在这个例子中,我们没有显式地从最后一个项中移除活动类,因为一旦activeIndex更新为新的索引,旧的索引对应的项会自动失去active类。如果你有特殊的逻辑需要处理,你可以根据具体需求来调整setActive函数。

这个例子展示了如何在Vue中动态绑定类名,并在点击事件中更新状态。这种方法可以很容易地扩展到更复杂的场景,比如列表项的嵌套或者其他交互逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

vue课程大全

}}传入对象 在data定义对象在HTML中调用 在控制台里,输入 app4.todos.push({ text: '新项目' }),你会发现列表最后添加了一个新项目。..." v-bind:key="item.id"> 数组更新检测方法 用来操作数组的方法 · 变异方法 主要对数组的添加删除排序等操作 Vue 将被侦听的数组的变异方法进行了包裹,所以它们也将会触发视图更新...'}) 组件component特点 可以复用但是没有el元素 · data必须是一个函数最后return对象数据 vue实例data是一个对象 · 组件树 每个组件又包含其他的小组件...插槽 · html中调用标签之内有内容自动添加 worldworld会添加到slot中 动态组件 bind:is="log">Vue 将会做以下处理:自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,在恰当的时机添加/删除 CSS 类名。

1.6K20

Vue 相关学习笔记(一)

注意:v-bind:class指令可以与普通的class特性共存 1、 v-bind 中支持绑定一个对象 如果绑定的是一个对象 则 键为 对应的类名 值 为对应data中的数据 添加事件,并让选中的高亮 4.1 、让默认的第一项tab栏高亮 tab栏高亮 通过添加类名active 来实现 (CSS active 的样式已经提前写好) 在data 中定义一个 默认的 索引...=== index 如果相等 则添加类名 active 否则 添加 空类名 4.2 、让默认的第一项tab栏对应的div 显示 实现思路 和 第一个 tab 实现思路一样 只不过 这里控制第一个div...tab栏 当前的高亮 其他的取消高亮 给每一个li添加点击事件 让当前的索引 index 和 当前 currentIndex 的 值 进项比较 如果相等 则当前li 添加active 类名 当前的...pop() 删除数组的最后一个元素,成功返回删除元素的值 shift() 删除数组的第一个元素,成功返回删除元素的值 unshift() 往数组最前面添加一个元素,成功返回当前数组的长度 splice

7.5K20
  • Vue指令 - 从零开始学Vue2

    4、找到插件 置顶 5、右键检查 点击最后面箭头,选择vue 6、点击root 可以看到vue中的数据 Vue.js 指令的书写规范 //书写位置:任意 HTML 元素的开始标签内 一次以后,立即解绑了该事件 比如给上面例子中的out添加一个.once 则只弹出一次 out 按键修饰符 在监听键盘事件时,我们经常需要检查详细的按键。...Vue 允许为 v-on 在监听键盘事件时添加按键修饰符: bind可以在其名称后面带一个参数,参数通常是HTML元素的特性(attribute),v-bind是动态绑定指令,默认情况下自带属性的值是固定的,为了能够动态的给这些属性添加值可以使用v-bind...' } }) 复制代码 v-bind:绑定class 类名:属性}">v-bind: class 根据属性值的情况来定,是否要添加类名

    2.4K00

    全栈工程师开发实战之从入门到技术实战之02--vue指令

    作用:为元素的属性 动态的绑定值 v-bind可以在其名称后面带一个参数,参数通常是HTML元素的属性(attribute),v-bind是动态绑定指令,默认情况下自带属性的值是固定的,为了能够动态的给这些属性添加...div v-bind:class="{ 类名: 布尔值 }"> //isActive是boolean属性的参数,为true就给div添加类名active,为false就不添加 bind....once:点击事件将只会触发一次 事件只会被触发一次,触发后,底层就会解绑事件 类似于jquery中one()事件绑定 .capture:添加事件监听器时使用事件捕获模式...,当前被点击的项目内容会显示在下方绿色方块中,并且当前被点击项目的背景会变成红色 使用 v-for 指令遍历显示导航项目,使用v-on添加添加事件,使用v-bind指令动态绑定class和key属性...案例5—商品的增加,删除,上下架 需求: 点击新增,添加商品,如果输入框为空字符串则弹出提示框 点击删除,删除对应的行 点击操作栏中的上下架,改变对应的状态 <!

    9610

    前端工程师之vue指令解析

    作用:为元素的属性 动态的绑定值 v-bind可以在其名称后面带一个参数,参数通常是HTML元素的属性(attribute),v-bind是动态绑定指令,默认情况下自带属性的值是固定的,为了能够动态的给这些属性添加...bind:class="{ 类名: 布尔值 }"> //isActive是boolean属性的参数,为true就给div添加类名active,为false就不添加 bind...:class="{ active: isActive }"> 可以同时绑定多个类名,也可以和静态类名同时存在 bind:class="{ active....once:点击事件将只会触发一次 事件只会被触发一次,触发后,底层就会解绑事件 类似于jquery中one()事件绑定 .capture:添加事件监听器时使用事件捕获模式...v-on添加添加事件,使用v-bind指令动态绑定class和key属性 案例5—商品的增加,删除,上下架 需求: 点击新增,添加商品,如果输入框为空字符串则弹出提示框 点击删除,删除对应的行 点击操作栏中的上下架

    14010

    前端三大框架之Vue-day01

    -- 2、 让带有插值 语法的 添加 v-cloak 属性 在 数据渲染完场之后,v-cloak 属性会被自动去除, v-cloak一旦移除也就是没有这个属性了...-- 2、如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示传递, 并且事件对象的名称必须是$event -->...Vue 允许为 v-on 在监听键盘事件时添加按键修饰符 bind:class指令可以与普通的class特性共存 1、 v-bind 中支持绑定一个对象 如果绑定的是一个对象 则 键为 对应的类名 值 为对应data中的数据 添加或者删除DOM元素 v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件 循环结构 v-for 用于循环的数组里面的值可以是对象

    1.8K10

    如何构建你的第一个 Vue.js 组件

    然后,打开/src/main.js并调整现有的代码: 最后,添加一些HTML代码到你的Rating.vue文件: 现在看看你的浏览器中的页面,你应该看到列表。...让我们在组件上添加一些简单的类: 和 css 样式: 看到那个scoped属性了吗? 这是告诉 Vue.js 去范围化样式,所以他们作用范围不会涵盖到其他地方。...您可能已经注意到一些属性以冒号为前缀,这是 v-bind 指令的缩写,它将属性动态绑定到表达式。我们可以把它写成长的形式,v-bind:class。...当 star 处于活动状态时,我们需要在 元素上添加 active 类。在我们的项目下,这意味着每个 的索引小于 stars 应该有 active 类。...相反,定义一个使用 props 的初始值作为自声的本地数据属性。 最后的润色 在这一天马上过去之前,我们应该了解 Vue.js 最后一个惊奇的地方:prop 的验证。

    2.5K50

    vue—你必须知道的

    v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">超然haha v-bind:style (将多个样式绑定到一个元素...) 当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。...自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,在恰当的时机添加/删除 CSS 类名。 2. 如果过渡组件提供了 JavaScript 钩子函数,这些钩子函数将在恰当的时机被调用。 3....如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画,DOM 操作(插入/删除)在下一帧中立即执行。...(注意:此指浏览器逐帧动画机制,和Vue的 nextTick 概念不同) 过渡的css类名 v-enter 过渡开始状态 v-enter-active 过渡状态 v-enter-to 过渡的结束状态(插入后

    1.9K20

    50行代码串行Promise,koa洋葱模型原来这么有趣?

    前言 大家好,我是若川,最近组织了源码共读活动《1个月,200+人,一起读了4周源码》,感兴趣的可以加我微信 ruochuan12 参与,长期交流学习。...其中最新的两篇是: Vue 3.2 发布了,那尤雨溪是怎么发布 Vue.js 的?...接收一个参数,校验参数是数组,且校验数组中的每一项是函数。 返回一个函数,这个函数接收两个参数,分别是context和next,这个函数最后返回Promise。...也就是 next 是下一个中间件里的函数。也就能解释上文中的 gif图函数执行顺序。测试用例中数组的最终顺序是[1,2,3,4,5,6]。...最后一个中间件中有调用next函数,则返回Promise.resolve。如果没有,则不执行next函数。这样就把所有中间件串联起来了。这也就是我们常说的洋葱模型。

    43820

    Vue模板语法

    -- 2、 让带有插值 语法的   添加 v-cloak 属性         在 数据渲染完场之后,v-cloak 属性会被自动去除,         v-cloak一旦移除也就是没有这个属性了...-- 2、如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示传递,                 并且事件对象的名称必须是$event            -->            ...Vue 允许为 v-on 在监听键盘事件时添加按键修饰符 bind:class指令可以与普通的class特性共存 //1、 v-bind 中支持绑定一个对象 如果绑定的是一个对象 则 键为 对应的类名 值 为对应data中的数据 ​ 添加或者删除DOM元素 控制元素是否渲染到页面 v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件 3.循环结构 v-for遍历数组

    6.7K40

    Vue

    对于这些在过渡中切换的类名来说,如果你使用一个没有名字的 ,则 v- 是这些类名的默认前缀。...推荐对于仅使用 JavaScript 过渡的元素添加 v-bind:css="false",Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。...在简单的场景下,可以使用一个空的 Vue 实例作为事件总线。原理就是把 Vue 实例当作一个中转站。 ?...在父级作用域中(应用的地方),加上template标签并添加 v-slot指令,接着赋值任意的名称,最后就可以使用刚刚自定义的名称来访问传过来的数据了 */...组件样式: 注意:这里遵循一个原则,不要直接去使用 Element 组件自带的类名 如果你想为 Element 组件添加自定义样式,那么建议你给它加你自己的类名来控制 html

    7K41

    Vue开发实战(03)-组件化开发

    对组件功能的封装,可以像搭积木一样开发网页。 Vue官方的示例图对组件化开发的形象展示。左边是一个网页,可以按照功能模块抽象成很多组件,这些组件就像积木一样拼接成网页。... 按钮 1.2 Vue自定义组件 把一个功能的模板(template)封装在一个.vue文件。...这样,父组件的数据变化会自动更新子组件的数据,从而实现删除功能。 父组件的数据变化为啥会自动更新子组件的数据 在Vue.js中,当父组件的数据更新时,它会重新渲染所有子组件。...,让父组件把元素清空: handleItemDelete: function () { // alert("delete") this.list = []; } 现在,考虑只删除点击的那一项...* 2. splice()是一个JavaScript数组方法,它用于在数组中添加或删除元素 * 第一个参数:要删除或添加元素的起始索引

    21020

    Vue 01.基础

    v-on @ 在按钮的事件处理函数中,写相关的业务逻辑代码:拿到 msg 字符串,然后 调用 字符串的 substring 来进行字符串的截取操作,把 第一个字符截取出来,放到最后一个位置即可...中的类名,isactive是vm实例中data中的变量 直接使用对象,对象的属性是类名,可不带引号 添加到 data 上的 list 中 // 注意:Vue已经实现了数据的双向绑定,每当修改了 data 中的数据,Vue会默认监听到数据的改动,自动把最新的数据,应用到页面上...如何根据Id,找到要删除这一项的索引 // 2....在这里可以进行一次性的初始化设置。每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次 和样式相关的操作,一般都可以在 bind 执行。

    1.6K40

    VUE.DRAGGABLE实现从左到右拖拽功能

    ,右边增加item7 3、右边items可以自由拖拽,但不能向左拖拽 4、右边items可以删除,如:点击item7的“×”,右边item7消失,左边item7出现 5、重置时,页面回复初始化状态 实现方法.../Vue.Draggable/#/simple 3、一开始左边加载所有的items,右边加载展示的items,注意:左边要过滤掉(隐藏)右边有的items,参考filterComs(left,right...值,拖拽结束后,name值消失, 解决方法:左右分别绑定一个v-bind=”dragOptionsL”,v-bind=”dragOptionsR” 8、问题:当右侧没有任何的items时,需要给右侧v-for...移动到右侧时,使用ghostR类!!!...false; }else if(classObj.indexOf("lul")>-1){ return false; } }, // 2.1 拖拽事件,添加时隐藏左侧添加的数据

    1.2K30
    领券