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


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 相关文章推荐
jQuery Validate初步体验(一)
Dec 12 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
javascript常用经典算法详解
Jan 11 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
你真的了解BOM中的history对象吗
Feb 13 Javascript
快速解决处理后台返回json数据格式的问题
Aug 07 Javascript
解决element UI 自定义传参的问题
Aug 22 Javascript
ES6 Promise对象概念及用法实例详解
Oct 15 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
jQuery实现的分页插件完整示例
May 26 jQuery
微信小程序实现签到弹窗动画
Sep 21 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
Nov 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
一个分页的论坛
2006/10/09 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
JS 实现Json查询的方法实例
2013/04/12 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python实现一个简单的MySQL类
2015/01/07 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
Python3爬楼梯算法示例
2019/03/04 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
python的slice notation的特殊用法详解
2019/12/27 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
班级标语大全
2014/06/21 职场文书
Oracle笔记
2021/04/05 Oracle
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫