【发布时间】:2017-04-01 10:53:45
【问题描述】:
我已经看到了几个如何在 Vue.js 中切换类的示例,如下所示:
new Vue({
el: "#app",
data: {
isActive: false
}
});
.demo {
width: 100px;
height: 100px;
background-color: red;
display: inline-block;
}
.active {
border: #000 solid 3px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.7/vue.js"></script>
<div id="app">
<div class="demo" @click="isActive = !isActive" :class="{active: isActive}"></div>
</div>
单击元素会切换它是否处于活动状态,然后您将切换类。这很好,但是当您有更多的元素并且您还可以像这样打开和关闭活动类时,这将不起作用:
new Vue({
el: "#app",
data: {
isActive: false
}
});
.demo {
width: 100px;
height: 100px;
background-color: red;
display: inline-block;
}
.active {
border: #000 solid 3px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.7/vue.js"></script>
<div id="app">
<div class="demo" @click="isActive = !isActive" :class="{active: isActive}"></div>
<div class="demo" @click="isActive = !isActive" :class="{active: isActive}"></div>
<div class="demo" @click="isActive = !isActive" :class="{active: isActive}"></div>
</div>
现在我们对所有元素都进行了相同的切换,即使我们只想切换被点击的单个元素。
我知道在 jQuery 中这很简单:
$('.demo').on('click', function() {
$(this).toggleClass('active');
});
.demo {
width: 100px;
height: 100px;
background-color: red;
display: inline-block;
}
.active {
border: #000 solid 3px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="app">
<div class="demo"></div>
<div class="demo"></div>
<div class="demo"></div>
</div>
我看到了一个示例,该示例需要制作一个需要导出/导入的整个组件,只是为了将 isActive 属性范围限定为该单个 div,但是对于这种简单的行为,该解决方案似乎很多。那么,像我的 jQuery 示例那样打开/关闭单个元素的 .active 类的最简单解决方案是什么?
【问题讨论】:
标签: javascript jquery vue.js