微信小程序自定义多选事件的实现代码


Posted in Javascript onMay 17, 2018

要实现下图的效果(自定义多选单选),大多数公司项目的多选框都是自己设计的,所以用原生标签或者组件是不可行的,最简单的是自己绑定事件,然后切换选择和未选择的图片。而小程序和vue一样是没法操作dom的,所以要利用数组的下标和自定义属性来进行三元判断。

微信小程序自定义多选事件的实现代码

直接上代码:

wxml:

<view class="sel-box">
   /**用wx:for来进行列表渲染**/
  <view wx:for="{{repContent}}" class="multi-selection">
   <text>{{item.message}}</text>
   /**利用数组的下标index来进行判断是哪个的事件**/
   <image src="{{selectIndex[index].sureid? hasSelect : noSelect}}" class="multi-img" data-selectIndex="{{index}}" bindtap="selectRep" />
  </view>
 </view>

js:

Page({
 /**
  * 页面的初始数据
  */
 data: {
  noSelect: 'https://xxxxx/ic_report_nor@2x.png',
  hasSelect: 'https://xxxxx/ic_check_ele@2x.png',
  repContent: [{ message: '广告内容' }, { message: '不友善内容' }, { message: '垃圾内容' }, { message: '违法违规内容' }, { message: '其他' }],
  selectIndex: [
   { sureid: false },
   { sureid: false },
   { sureid: false },
   { sureid: false },
   { sureid: false },
  ],
 },

 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function (options) {
 
 },

 selectRep:function(e){
  let index = e.currentTarget.dataset.selectindex; //当前点击元素的自定义数据,这个很关键
  let selectIndex = this.data.selectIndex;  //取到data里的selectIndex
  selectIndex[index].sureid = !selectIndex[index].sureid;  //点击就赋相反的值
  this.setData({
   selectIndex: selectIndex  //将已改变属性的json数组更新
  })
 }
})

currentTarget::事件绑定的当前组件。

dataset:在组件中可以定义数据,这些数据将会通过事件传递给 SERVICE。 书写方式: 以data-开头,多个单词由连字符-链接,不能有大写(大写会自动转成小写)如data-element-type,最终在 event.currentTarget.dataset 中会将连字符转成驼峰elementType。

开始入门学习小程序的,看官方文档就好了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs学习笔记之九 数据模型(上)
Jan 11 Javascript
Javascript 绘制 sin 曲线过程附图
Aug 21 Javascript
JS清除选择内容的方法
Jan 29 Javascript
js鼠标滑过图片震动特效的方法
Feb 17 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
Vue Spa切换页面时更改标题的实例代码
Jul 15 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
关于meta viewport中target-densitydpi属性详解(推荐)
Aug 18 Javascript
微信小程序实现tab和swiper切换结合效果
Jul 17 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
angularjs获取到My97DatePicker选中的值方法
Oct 02 Javascript
简述pm2常用命令集合及配置文件说明
May 30 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 #Javascript
JS实现的判断方法、变量是否存在功能示例
Mar 28 #Javascript
vue 路由嵌套高亮问题的解决方法
May 17 #Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 #Javascript
结合Vue控制字符和字节的显示个数的示例
May 17 #Javascript
微信小程序使用form表单获取输入框数据的实例代码
May 17 #Javascript
AngularJS实现的base64编码与解码功能示例
May 17 #Javascript
You might like
用穿越火线快速入门php面向对象
2012/02/22 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
理解JavaScript原型链
2016/10/25 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
打包发布Python模块的方法详解
2016/09/18 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
搞笑创意广告语
2014/03/17 职场文书
三年级小学生评语
2014/04/22 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
家长会后的感想
2015/08/11 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android