单击Vue.js切换类

如何在vue.js中切换类?

我有以下内容:

<th class="initial " v-on="click: myFilter">
    <span class="wkday">M</span>
</th>

new Vue({
  el: '#my-container',
  data: {},
  methods: {
    myFilter: function(){
      // some code to filter users
    }
  }
});

当我单击时,th我想按以下方式申请active课程:

<th class="initial active" v-on="click: myFilter">
    <span class="wkday">M</span>
</th>      

这需要切换,即每次单击它都需要添加/删除类。

Davaid老丝2020/03/10 14:15:28

此示例使用列表:在某些位置单击时,它变为红色

的HTML:

<div id="app">
  <ul>
    <li @click="activate(li.id)" :class="{ active : active_el == li.id }" v-for="li in lista">{{li.texto}}</li>   
  </ul>
</div>

JS:

var app = new Vue({
  el:"#app",
  data:{
    lista:[{"id":"1","texto":"line 1"},{"id":"2","texto":"line 2"},{"id":"3","texto":"line 3"},{"id":"4","texto":"line 4"},{"id":"5","texto":"line 5"}],
    active_el:0
  },
  methods:{
    activate:function(el){
        this.active_el = el;
    }
  }
});

的CSS

ul > li:hover {
  cursor:pointer;
}
.active {
  color:red;
  font-weight:bold;
}

小提琴:

https://jsfiddle.net/w37vLL68/158/

西里神奇2020/03/10 14:15:28

此答案与 Vue.js version 2

<th 
  class="initial " 
  v-on:click="myFilter"
  v-bind:class="{ active: isActive }"
>
  <span class="wkday">M</span>
</th>

Douglas的其余答案仍然适用(使用设置新的Vue实例isActive: false,等等)。

相关文档:https : //vuejs.org/v2/guide/class-and-style.html#Object-Syntaxhttps://vuejs.org/v2/guide/events.html#Method-Event-Handlers

猪猪理查德2020/03/10 14:15:28

不需要方法:

// html element
<div id="mobile-toggle"
 v-bind:class="{ active: showMobileMenu }"
 v-on:click="showMobileMenu = !showMobileMenu">
</div>

//in your vue.js app
data: {
    showMobileMenu: false
}