<view class="anthology_title">
<text>选集</text>
<text>全{{vurl.length}}话</text>
</view>
<view class="anthology_item">
<view wx:for="vurl" bindtap="xj"><!--主要问题在这里,这个wxfor这里-->
<text wx:if="{{index == 0}}" class="choice">{{index + 1}}</text>
<text wx:else class="no">{{index + 1}}</text>
</view>
</view>
问题在vx:for那一部分。默认进去第一个text的class是choice,这个我已经配置好了,我想的是,当我点了这个wx:for里面的其他容器的时候(获得焦点),更改no为choice,然后其他失去焦点的容器又变回去no
用一个变量记录选中的下标,然后wx:for的时候和遍历到的数组下标index比较下就行,不需要if判断,直接设置class属性,示例如下
代码片段:https://developers.weixin.qq.com/s/7F8lEZmc7rwj
js
Page({
data:{
selected:0,//要更改选择默认的项或者保存后读取数据库更改这个数据项就行
vurl:['url1','url2','url3']
},
xj(e){
this.setData({selected:e.currentTarget.dataset.index})
}
})
wxml
<view class="anthology_title">
<text>选集</text>
<text>全{{vurl.length}}话</text>
</view>
<view class="anthology_item">
<view wx:for="{{vurl}}" bindtap="xj" data-index="{{index}}">
<text class="{{index==selected?'choice':'no'}}">{{index + 1}}--{{item}}</text>
</view>
</view>
wxss
.choice{color:#f00}
.no{color:black}
其实你可以这么做:
你可以在遍历的每个对象中维护自己的一个状态,用来标识当前的样式,比如默认第一个对象的样式是“选择”,其他的是“不选择”,然后在点击其他对象的时候将当前点击的对象的样式标识为“选择”,其他标识为“不选择”,这样每个对象根据自己的样式进行渲染,即点击谁,谁“选择”。
以上只为思路
你需要在 vurl 加一个 状态 维护 自己的选中状态 。
比如 sttus:"no" 默认不选中。
然后 wx:for 里 判断 就用 item.status
<text wx:if="{{item.status=="choose"}}" class="choice">{{index + 1}}</text>
<text wx:else class="no">{{index + 1}}</text>
也可以把变量定义到item对象里,每次只需要再js里改就行
三元运算,第一个参数就是状态,后面是你要加的类名
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!