在微信小程序里面没有DOM对象, 不能操作DOM. 所有的操作通过数据来实现,下面主要实现了给循环列表点击添加类的操作

一、单项

目标需求:实现下图,给点击的view增加类,每次只能选择一个。

主要思路:给点击的view增加类,依靠点击的index对state进行赋值。如果相同时,给该view增加类。

实现代码

.wxml文件

 <view>
<view class='appointent-date'>
<view class="appointent-date-div {{state==index?'active-tag':''}}" bindtap="select_date" wx:for="{{dates}}" data-key='{{index}}'>
<view class="flex-item" >
<rich-text class='data_name'>{{item.data_name}}</rich-text>
<rich-text>{{item.name}}</rich-text>
</view>
</view>
</view>
</view>

.wxss文件

 .appointent-date-div{
display:inline-block;
width:20%;
text-align: center;
margin-top: 30rpx;
}
.flex-item{
display: inline-block;
width:96rpx;
height: 88rpx;
font-size: 26rpx;
border:2rpx solid #999;
text-align: center;
border-radius: 10rpx;
color: #999;
cursor: pointer;
line-height: 30rpx;
}
.data_name{
font-size: 36rpx;
line-height: 52rpx; }
.active-tag .flex-item{
background: #c8321e;
color:#fff;
border:1rpx solid #fff;
}

.js文件

 Page({

   /**
* 页面的初始数据
*/
data: {
dates: [
{ "data_name": "30", "name": "十三"},
{ "data_name": "1", "name": "十四"},
{ "data_name": "2", "name": "十五"},
{ "data_name": "3", "name": "十六"},
{ "data_name": "4", "name": "十七"},
{ "data_name": "5", "name": "十八"},
{ "data_name": "6", "name": "十九"},
{ "data_name": "7", "name": "二十"},
{ "data_name": "8", "name": "廿一"},
{ "data_name": "9", "name": "廿二"},
{ "data_name": "10", "name": "廿三"},
{ "data_name": "11", "name": "廿四"},
{ "data_name": "12", "name": "廿五"},
{ "data_name": "13", "name": "廿六"},
{ "data_name": "14", "name": "廿七"}
],
state:''
},
//选择日期后加样式
select_date: function (e) {
this.setData({
state: e.currentTarget.dataset.key,
});
},
})

二,多项

目标需求:实现下图,给点击的view增加类,再次点击时取消,可以多项选择。

主要思路

给dates数组增加一个属性state, 1表示状态选中,0表示未选中,每次点击时修改state的值。

实现代码:

.wxml文件

 <view class='appointent-date'>
<view class="appointent-date-div {{item.state==1?'active-tag':''}}" bindtap="select_date" wx:for="{{dates}}" data-key='{{index}}'>
<view class="flex-item" >
<rich-text class='data_name'>{{item.data_name}}</rich-text>
<rich-text>{{item.name}}</rich-text>
</view>
</view>
</view>

.wxss文件

 .appointent-date{
padding:10rpx 30rpx 40rpx 30rpx;
background: #fff;
box-sizing: border-box;
}
.appointent-date-div{
display:inline-block;
width:20%;
text-align: center;
margin-top: 30rpx;
}
.flex-item{
display: inline-block;
width:96rpx;
height: 88rpx;
font-size: 26rpx;
border:2rpx solid #999;
text-align: center;
border-radius: 10rpx;
color: #999;
cursor: pointer;
line-height: 30rpx;
}
.data_name{
font-size: 36rpx;
line-height: 52rpx; }
.active-tag .flex-item{
background: #c8321e;
color:#fff;
border:1rpx solid #fff;
}

.js文件

 Page({

   /**
* 页面的初始数据
*/
data: {
dates: [
{ "data_name": "30", "name": "十三", "state": 0 },
{ "data_name": "1", "name": "十四", "state": 0 },
{ "data_name": "2", "name": "十五", "state": 0 },
{ "data_name": "3", "name": "十六", "state": 0 },
{ "data_name": "4", "name": "十七", "state": 0 },
{ "data_name": "5", "name": "十八", "state": 0 },
{ "data_name": "6", "name": "十九", "state": 0 },
{ "data_name": "7", "name": "二十", "state": 0 },
{ "data_name": "8", "name": "廿一", "state": 0 },
{ "data_name": "9", "name": "廿二", "state": 0 },
{ "data_name": "10", "name": "廿三", "state": 0 },
{ "data_name": "11", "name": "廿四", "state": 0 },
{ "data_name": "12", "name": "廿五", "state": 0 },
{ "data_name": "13", "name": "廿六", "state": 0 },
{ "data_name": "14", "name": "廿七", "state": 0 }
]
},
//选择日期后加样式
select_date: function (e) {
var index = e.currentTarget.dataset.key;
if (this.data.dates[index].state == 1) {
this.data.dates[index].state = 0;
} else if (this.data.dates[index].state == 0) {
this.data.dates[index].state = 1;
}
this.setData({
dates: this.data.dates,
});
},
})

微信小程序实现给循环列表点击添加类(单项和多项)的更多相关文章

  1. 微信小程序实现给循环列表添加点击样式实例

    微信小程序有个属性hover-class='active',是指当点击列表元素时当按下鼠标左键会显示active样式,但是鼠标离开样式就会复原.可以参考以下解决方案,直接上代码: wxml: ? 1 ...

  2. 微信小程序编写新闻阅读列表

    微信小程序编写新闻阅读列表 不忘初心,方得始终:初心易得,始终难守. 本篇学习主要内容 Swiper 组件(轮播图) App.json 里的关于导航栏.标题的配置. Page 页面与应用程序的生命周期 ...

  3. 微信小程序wepy开发循环wx:for需要注意

    微信小程序wepy开发循环wx:for需要注意 item index值必须在wx:for之后使用 <view wx:for="{{tablist}}" class=" ...

  4. 微信小程序之for循环

    在微信小程序中也有for循环,用于进行列表渲染. 官方实例 打开微信开发者文档,在框架部分的视图层-->wxml-->列表渲染中可以看到官方给出的for循环实例,在实例中 可以看到下面相关 ...

  5. 微信小程序中的循环遍历问题

    比如:如果在微信小程序中要遍历输出 0-9 的数,我们会使用for循环 ;i<;i++){ console.log(i); } 确实结果也是这样: 但是,如果我在循环时同时调用wx的api接口1 ...

  6. 微信小程序wx:for循环

    最近做微信小程序碰到了一些问题,和wx:for循环相关,wx:for有很多用途,例如可以用于swiper中图片的循环,也就是所谓的轮播图,也可以用于其它的循环,可以大大地减少代码量. 但wx:for. ...

  7. 微信小程序:防止多次点击跳转(函数节流)

    场景 在使用小程序的时候会出现这样一种情况:当网络条件差或卡顿的情况下,使用者会认为点击无效而进行多次点击,最后出现多次跳转页面的情况,就像下图(快速点击了两次): 解决办法 然后从 轻松理解JS函数 ...

  8. 微信小程序——实现动画循环播放

    今天在做砍价页面的时候需要将一个按钮动起来,效果图如下: 其实它实现的原理很简单,就是循环的缩小放大. css3中的animate 有个属性是 animation-iteration-count 可以 ...

  9. 微信小程序开发——超链接或按钮点击跳转到其他页面失效

    1. 超链接导航失效: 小程序规则——wx.navigateTo 和 wx.redirectTo 不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面

随机推荐

  1. vue实现左侧滑动删除

    不是很完美,无法做到第一个左滑其他的隐藏删除: 代码来源于 https://segmentfault.com/a/1190000011062124 自己做了写改动,添加父组件点击触发子组件 引入组件 ...

  2. 2019.01.01洛谷 P4725/P4726 多项式对数/指数函数(牛顿迭代)

    4725传送门 4726传送门 解析 代码: #include<bits/stdc++.h> #define ri register int using namespace std; in ...

  3. 2018.11.07 NOIP模拟 分糖果(贪心)

    传送门 考虑 n = 2 时的情况:假定两个人分别为(a, b),(c, d),则当且仅当min(a,d) ≤ min(b,c)时,把(a, b)放在前面更优,否则把(c, d)放在前面更优 然后把n ...

  4. java socket之多人聊天室Demo

    一.功能介绍 该功能实现了一个类似QQ的最简单多人聊天室,如下图所示. 二.目录结构 三.服务端 1)SocketServer类,该类是服务端的主类,主要负责创建聊天窗口,创建监听客户端的线程: pa ...

  5. OSI七层模型和TCP/IP四层模型

    1)网络层负责点到点的传输(这里的“点”指主机或路由器),而传输层负责端到端的传输(这里的“端”指应用进程) 2)ARP协议介于数据链路层和网络层之间(IPv4专有,IPv6的地址映射功能在ICMPv ...

  6. Beta阶段第三篇Scrum冲刺博客-Day2

    1.站立式会议 提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 张晨晨:熟悉代码 郭琪容:了解复习模块需要的部分知识 ...

  7. 类中main函数的快捷创建

    方法一: 新建类时,选择创建 方法二: 打出main-->Alt + /

  8. 【python-ini】python读写ini文件

    [python-ini]python读写ini文件 本文实例讲述了Python读写ini文件的方法.分享给大家供大家参考.具体如下: 比如有一个文件update.ini,里面有这些内容:   1 2 ...

  9. 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)

    Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...

  10. JavaScript 获取鼠标点击位置坐标

    在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊 ...