微信小程序自定义多选
在美团订外卖时发现美团的筛选很漂亮,所以我也想想要做这种五颜六色的筛选,研究了两天终于做出来了,好像有点笨
话不多说开弄
整体思路就是
1.让元素id与点击事件获得到的元素details.id相等,获取点击事件id前必须先给节点添加data-id属性
此时,点击可以动态改变tag样式
2.获取点击元素值,因为要把选中的元素传给后台,所以设置空数组,将点击元素push进去就好了
3.要实现点击一次选中,点击第二次是取消选中
遇到问题
1.当我将点击元素push进空数组,我发现相同元素会push进去好多,于是我进行数组去重
2.实现点击一次选中,点击第二次是取消选中时,我发现无法获取到点击次数是多少,后来我尝试了touchstart,touchend事件,但是我还是无法获取到点击次数,后来我在组件data中设置一个number:0,但是我又发现,我无论点击哪个元素该数值都是一直增加的
解决方法
遇到问题中(2),我将tag的list加一个number属性,这样点击增加次数为该元素的点击次数。
(1)click判断该元素是否点亮(2)number判断该元素点击次数
写一个函数解决了,点击一次点亮,再次点击还原为奇数时将元素push到空数组selectList中,返回click属性,确定元素是否点亮
oddCheckEvenCancel(number, click, name, selectList){
if (number % 2 === 0) {
click = “”
}
if (number % 2 === 1) {
selectList.push(name)
click = “true”
}
return click
}
遇到问题(1)解决是否点亮之后,我发现就算元素为非点亮状态时空数组依旧push一个点击元素,那么就是click的值为空把这个元素移除掉就好了
所以我将选中元素与列表元素进行对比,如果有一样的名字,click还为空,那么删除该元素。
完工哈哈哈哈