前言: js: 以上方法即可实现for循环出来的事件,点击更改当前的样式。有更好的方法,欢迎大家留言交流~
相信很大开发者都遇到过这种情况,for循环里面添加一个事件,点击事件通过变量更改样式或者显示某一元素,比如:
当我们点击改变state值的时候,所有的元素都会一起改变,但是我们要的只是点击当前的元素,当前的state改变,这个时候,就不能直接定义一个变量去改变它的状态了<view a:for="{{list}}"> <!-- 这个state是在js里面的变量,state等于1执行class名为box,不等于1执行class名为boxData --> <view class="{{ state == '1' ? 'box':'boxData' }}" onTap="handleClick"> {{item}} </view> </view>
正确方法如下: 使用list数组里面的属性去控制,点击当前,拿到当前的index,去改变它的状态
html: <view a:for="{{list}}"> <!-- 这个state是在js里面的变量,state等于1执行class名为box,不等于1执行class名为boxData --> <view class="{{ item.state == '1' ? 'box':'boxData' }}" onTap="handleClick" data-index="{{index}}" data-state="{{item.state}}"> {{item}} </view> </view>
Page({ // 页面的初始数据 data: { list: [ { "id": 1139427, "fundCode": "502023", "fundName": "鹏华钢铁", "state": 1, }, { "id": 1139427, "fundCode": "502023", "fundName": "鹏华钢铁", "state": 2, }, { "id": 1139427, "fundCode": "502023", "fundName": "鹏华钢铁", "state": 1, }, ] }, handleClick: function (e) { var index = e.currentTarget.dataset.index;//拿到下标 var state = e.currentTarget.dataset.state;//拿到订阅状态的state let listArr = this.data.list;//列表数据 var str = state == '1' ? '2' : '1'; listArr[index].state = str; } })
本文章为原创,转发请注明出处,谢谢!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算