zoukankan      html  css  js  c++  java
  • 微信小程序button选中改样式-实现单选/多选

    小程序实现多button单选/多选

    红色为选中状态

    单选

    多选

    ①wxss

    /* pages/button-select/button-select.wxss */
    
    .button_container{
      display: flex;
      flex-direction: row;
      justify-content: space-around
    }
    /* 按钮未选中 */
    .normal_button{
      background: greenyellow
    }
    /* 按钮选中 */
    .checked_button{
      background: red;
      color: white
      
    }
    

    ②wxm

    样式选中改变是通过三元运算符实现的

    <!--pages/button-select/button-select.wxml-->
    <view class='button_container'>
      <block wx:for="{{buttons}}" wx:key="buttons">
      <button class='{{item.checked?"checked_button":"normal_button"}}' data-id='{{item.id}}' bindtap='radioButtonTap'>{{item.name}}</button>
      </block>
    </view>
    <text>{{msg}}</text>
    

    ③js

    Page({...})中填充按钮数据

    data: {
        buttons: [{ id: 1, name: '银色' }, { id: 2, name: '白色' }, { id: 3, name: '黑色' }],
        msg:'',
      },
    

    默认使第一个按钮被选中Page({...})

    onLoad: function (options) {
        this.data.buttons[0].checked = true;
        this.setData({
          buttons: this.data.buttons,
        })
      },
    

    Page({...})中添加事件监听方法(单选)

    /**
     * 事件监听,实现单选效果
     * e是获取e.currentTarget.dataset.id所以是必备的,跟前端的data-id获取的方式差不多
     */
    radioButtonTap: function (e) {
        console.log(e)
        let id = e.currentTarget.dataset.id
        console.log(id)
        for (let i = 0; i < this.data.buttons.length; i++) {
          if (this.data.buttons[i].id == id) {
            //当前点击的位置为true即选中
            this.data.buttons[i].checked = true;
          }
          else {
            //其他的位置为false
            this.data.buttons[i].checked = false;
          }
        }
        this.setData({
          buttons: this.data.buttons,
          msg: "id:"+id
        })
      },
    

    Page({...})中添加事件监听方法(多选)

    记得在wxml中修改绑定方法bindtap='radioButtonTap'

      checkButtonTap:function(e){
        console.log(e)
        let id = e.currentTarget.dataset.id
        console.log(id)
        for (let i = 0; i < this.data.buttons.length; i++) {
          if (this.data.buttons[i].id == id) {
            if (this.data.buttons[i].checked == true) {
              this.data.buttons[i].checked = false;
             
            } else {
              this.data.buttons[i].checked = true;
              
            }
          }
        }
       this.setData({
         buttons: this.data.buttons,
         msg: "id:"+id
        })
        
      },
  • 相关阅读:
    被initramfs的一个要求搞死
    【转】网卡驱动注册到PCI总线这一过程的分析
    PCI总线
    diff和patch使用指南
    Windows 平台下构建Android 开发环境
    linux 如何使用大于2T的块设备
    PCI设备驱动 三
    CFI Flash, JEDEC Flash ,Parellel Flash, SPI Flash, Nand Flash,Nor Flash的区别和联系
    使用initramfs启动Linux成功
    glibc 各个库作用介绍
  • 原文地址:https://www.cnblogs.com/lifan1998/p/10284198.html
Copyright © 2011-2022 走看看