首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue框架中多元素图标的悬停更改

vue框架中多元素图标的悬停更改
EN

Stack Overflow用户
提问于 2017-03-13 17:44:58
回答 1查看 3.3K关注 0票数 4

我有四个元素,在悬停时,我想更改悬浮元素的图标,我知道我可以用JS/jQuery来完成它,但是我对Vue还不熟悉,我想在vue中这样做。现在,它用以下代码更改了所有四个元素的图标:

HTML:

代码语言:javascript
复制
<div class="col-md-3">
<div class="welcome-latest">
    <div class="hover-icon animated" v-bind:class="{ latestActive : isActive }">
        <i class="fa fa-play" aria-hidden="true"></i>
    </div>
    <div class="welcome-latest-part"
            v-on:mouseover="latestActive"
            v-on:mouseleave="latestInActive">
        <a href="#">
            <div class="latest-icon">
                <i class="fa fa-play-circle-o" aria-hidden="true"></i>
            </div>
            <hr>
            <div class="latest-title">
                <h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit</h2>
            </div>
        </a>
    </div>
</div>
</div>

Vue:

代码语言:javascript
复制
new Vue({
    el: '#app',

    data : {
        isActive : true
    },

    methods : {
        latestActive (part) {
            this.isActive = false;
        },
        latestInActive(part) {
            this.isActive = true;
        }
    }
});

但我只想改变悬停的元素!我会怎么做?先进的谢谢。

这是我的小提琴

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-13 19:21:03

本质上,您的问题是使用全局状态为这里的所有元素设置类。

代码语言:javascript
复制
v-bind:class="{ latestActive : isActive }"

解决这一问题的一种方法是将列转换为组件。这样,他们每个人都会有自己的状态。

代码语言:javascript
复制
Vue.component("component",{
  props:["text"],
  template:"#component",
  data(){
    return {
        isActive:true
    }
  }
})

<template id="component">
  <div class="welcome-latest">
    <div class="hover-icon animated" :class="{ latestActive : isActive }">
      <i class="fa fa-play" aria-hidden="true"></i>
    </div>
    <div class="welcome-latest-part"
         v-on:mouseover="isActive=true"
         v-on:mouseleave="isActive=false">
      <a href="#">
        <div class="latest-icon">

        </div>
        <hr>
        <div class="latest-title">
          <h2>{{text}}</h2>
        </div>
      </a>
    </div>
  </div>
</template>

然后像这样修改#app

代码语言:javascript
复制
<div class="col-md-3">
    <component text="Lorem ipsum dolor sit amet, consectetur adipisicing elit"></component>
</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42770109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档