注意事项:

1 v-for index 是可以写在标签属性里面的,但是不能 {{ }}

2 标签的 class v-bind对象语法 来绑定,当 index == isAcitive 时,则改变颜色。用这种方式可以不需要再像原生 js 那样,根据排他思想先遍历一遍全部元素,把所有元素的颜色样式去掉,然后再给当前元素添加颜色样式。

3 通过把 index 传给 click 方法,可以在vue对象的函数中动态改变 isAcitve

4 v-cloak 可省略

代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .active {
            color: red;
        }

        [v-cloak] {
            display: none;
        }
    </style>
</head>

<body>
    <div id="app">
        <div @click="btnClick(index)" :class="{active:index==isActive}" v-for="(item,index) in arr" v-cloak>{{index+1}}
            -
            {{item}}
        </div>
    </div>
    <script src="vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                arr: ['海王', '海尔兄弟', '黑猫警长', '海贼王'],
                isActive: 0
            },
            methods: {
                btnClick: function (index) {
                    this.isActive = index;
                }
            }
        })
    </script>
</body>

</html>

 

Logo

前往低代码交流专区

更多推荐