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


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 相关文章推荐
自适应图片大小的弹出窗口
Jul 27 Javascript
漂亮的widgets,支持换肤和后期开发新皮肤
Apr 23 Javascript
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
js事件冒泡实例分享(已测试)
Apr 23 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
Mar 21 Javascript
JS拖拽插件实现步骤
Aug 03 Javascript
js时间戳转为日期格式的方法
Dec 28 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
Apr 29 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
Jan 11 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中文字符截取防乱码
2008/03/28 PHP
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
PHP实现简易计算器功能
2020/08/28 PHP
JQuery中each()的使用方法说明
2010/08/19 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
js获取url传值的方法
2015/12/18 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
物业管理专业个人的自我评价
2013/11/19 职场文书
网站创业计划书
2014/04/30 职场文书
员工薪酬激励方案
2014/06/13 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers