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


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 相关文章推荐
XmlUtils JS操作XML工具类
Oct 01 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
Nov 17 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
简单谈谈javascript中的变量、作用域和内存问题
Aug 30 Javascript
node.js回调函数之阻塞调用与非阻塞调用
Nov 13 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
基于JavaScript实现控制下拉列表
May 08 Javascript
Vue项目打包编译优化方案
Sep 16 Javascript
vue 如何使用递归组件
Oct 23 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中error与exception的区别及应用
2014/07/28 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
深入浅析Python字符编码
2015/11/12 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
python 爬取疫情数据的源码
2020/02/09 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
介绍一下write命令
2012/09/24 面试题
医药代表个人求职信范本
2013/12/19 职场文书
临床医师专业个人自我评价
2014/01/08 职场文书
阿德的梦教学反思
2014/02/06 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
敬老月活动总结
2014/08/28 职场文书
写给女朋友的保证书
2015/05/09 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL