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


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 相关文章推荐
零基础学JavaScript最新动画教程+iso光盘下载
Jan 22 Javascript
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
May 02 Javascript
把jquery 的dialog和ztree结合实现步骤
Aug 02 Javascript
JS简单操作select和dropdownlist实例
Nov 26 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 Javascript
详解为Bootstrap Modal添加拖拽的方法
Jan 05 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
Mar 15 Javascript
create-react-app安装出错问题解决方法
Sep 04 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 Javascript
vue实现两个组件之间数据共享和修改操作
Nov 12 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/04/07 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
PHP多态代码实例
2015/06/26 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
vue mounted组件的使用
2018/06/18 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
在Mac OS上搭建Python的开发环境
2015/12/24 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
8和9的加减法教学反思
2014/05/01 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android