vue.js 2.0 通过v-for遍历下,点击添加class ,之前点击过的class不取消(不是单选,类似多选)

 <a  :href="img.src" class="block"  v-bind:style="{backgroundImage: 'url(' + img.url + ')'}"  v-for="(img,index) in imgS" v-if="sShow(img.label)&&sShow2(img.type)">
      <div class="tx">{{img.name }}</div>
      <div class="xq">
           <div>
                <span class="fl">{{img.type}}</span>
                <span class="fl n">1张</span>
           </div>
     </div>
    <span class="sc" v-on:click="sC(img.url,img.type,index)" :class="i==index?'a':true"></span>
</a>

这种只能给当前点击的添加class,但是之前点击的取消掉了,怎么才能之前点过的也有class呢?
阅读 8.2k
2 个回答

tempalte 部分

@click="handler(index)"class='{className:classItem[index]}'

script部分

data(){ classItem:''}

hanlder(index){this.$set(this.classItem,index,true) }

我的建议是,用一个变量,保存当前选中了哪些数据项,点击等操作时更新这个变量。而元素根据这个变量绑定 class 或者样式。而不是像 jQ 那样,在点击事件里直接添加或者删除样式。这也是 vue 这类框架的优势--数据绑定,数据驱动视图。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题