小程序实现toggleclass功能的问题

<view class='a'>
  <text> Hello {{name}}!</text>
  <block wx:for='{{datas}}' wx:key='u'>
    <button data-index='{{index}}' class='{{index==id?classname:""}}' data-m='{{t==index}}' bindtap="changeName"> {{item.data}} </button>
  </block>
</view>

上面是wxml 三个btn,想实现点击添加classname(class='m'),下面是js部分,可以实现点击添加class='m'功能,但是当点击已添加class='m'按钮时,如何移除此时按钮的class?试了半天还没有想到办法

var datas = {
  dataa: [{
    data: 'click me1'
  }, {
    data: 'click me2'
  }, {
    data: 'click me3'
  },
  ]
}
Page({
  data: { name: 'lili', classname:'', datas: datas.dataa },
  changeName: function (e) {
    var x = e.currentTarget.dataset.index
    console.log(e.detail)
    this.setData({
      name: 'MINA',
      id: x,
      classname:'m',
    })
    ...
阅读 3.6k
2 个回答

你就一个变量,要控制这么多东西。。。
每一项加上一个值来控制是否添加classname吧

你可以用一个数组来存class状态。

<button data-index='{{index}}' class='{{index+1==selectedList[index]?"m":""}}' bindtap="changeName"> {{item.data}} </button>

Page({
  data: { name: 'lili', selectedList:[], datas: datas.dataa },
  changeName: function (e) {
    var x = e.currentTarget.dataset.index
    this.setData({
        ['selectedList[' + x + ']']: this.data.selectedList[x]?null:x+1
    })
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题