微信小程序如何自定义单选和多选

实现单选

实现效果:点击显示单选状态,每次仅能点击一个元素。

实现方式:

wxml:

html 复制代码
<view wx:for="{{item_list}}" data-info="{{index}}" class="{{menu_index===index?'choose':'no_choose'}}" bind:tap="changeColor">{{item}}</view>

item_list是单选的元素,class定义了选中和未选中的显示形式,changeColor更新点击元素。

.wxss

css 复制代码
.choose{
  color: red;
  background-color: white;
  font-weight: bold;
}
.no-choose{
  color:black
}

定义选中和未选中的显示样式。

.js

javascript 复制代码
data:{
    item_list:['牛肉粉','小吃','加料','饮料']
},  
changeColor(e){
    this.setData({
      menu_index: e.currentTarget.dataset.info,
    });
  }

changeColor实时更新点击元素信息。

实现多选

实现效果:点击多个元素均能显示点击状态。

再次点击可取消选择:

.wxml

html 复制代码
<view wx:for="{{item_list}}" class="{{menu_index[index]==index?'choose':'no_choose'}}" data-index="{{index}}" bind:tap="changeColor">{{item}}</view>

item_list是单选的元素,class定义了选中和未选中的显示形式,changeColor更新点击元素。

.wxss

css 复制代码
.choose{
  color: red;
  background-color: white;
  font-weight: bold;
}
.no-choose{
  color:black
}

定义选中和未选中的显示样式。

.js

javascript 复制代码
data:{
    item_list:['牛肉粉','小吃','加料','饮料']
},  
changeColor(e){
    var m_index = this.data.menu_index
    var index = e.currentTarget.dataset.index
    var m = "menu_index."+ e.currentTarget.dataset.index
    if(m_index[index]==index){
      this.setData({
        [m]: -1
      })
    }else{
      this.setData({
        [m]: e.currentTarget.dataset.index
      })
    }
}

changeColor实时更新点击元素信息,将已点击元素保存包m_index,当元素处于选中状态m_index[index]的值等于传回的index,当元素再次被点击,取消点击状态时, m_index[index]=-1。

更多内容欢迎关注。

有用的话欢迎赞赏。

相关推荐
环信即时通讯云8 小时前
实现小程序 uniApp 输入框展示自定义表情包
小程序·uni-app
特严赤傲9 小时前
uniappx 开发微信小程序 腾讯地图偏移量计算
微信小程序·uts·uniappx·地图偏移量
2501_9159214310 小时前
iOS 抓不到包怎么办?工程化排查与替代抓包方案(抓包/HTTPS/Charles代理/tcpdump)
android·ios·小程序·https·uni-app·iphone·tcpdump
星光一影11 小时前
打车/网约车、代驾、顺风车/拼车、货运、租车等多种出行服务的一站式解决方案
mysql·微信小程序·php·uniapp·html5·web app
JSON_L12 小时前
Fastadmin中使用小程序登录
小程序·php·fastadmin
星光一影13 小时前
悬赏任务平台/拉新地推系统源码
redis·mysql·小程序·php·uniapp·html5
2501_9159184113 小时前
Fiddler抓包工具详解,HTTP/HTTPS抓包、代理设置与调试技巧一站式教程(含实战案例)
http·ios·小程序·https·fiddler·uni-app·webview
一匹电信狗14 小时前
【C++】哈希表详解(开放定址法+哈希桶)
服务器·c++·leetcode·小程序·stl·哈希算法·散列表
QuantumLeap丶14 小时前
《uni-app跨平台开发完全指南》- 04 - 页面布局与样式基础
vue.js·微信小程序·uni-app
www_stdio16 小时前
微信小程序入门:从零构建一个 Blog 小程序
微信·微信小程序