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


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 相关文章推荐
在网页中控制wmplayer播放器
Jul 01 Javascript
使用jscript实现二进制读写脚本代码
Jun 09 Javascript
Javascript在IE和FireFox中的不同表现简析
Dec 03 Javascript
checkbox全选所涉及到的知识点介绍
Dec 31 Javascript
js定时调用方法成功后并停止调用示例
Apr 08 Javascript
js打造数组转json函数
Jan 14 Javascript
JavaScript实现SHA-1加密算法的方法
Mar 11 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
JS字符串按逗号和回车分隔的方法
Apr 25 Javascript
微信小程序开发之IOS和Android兼容的问题
Sep 26 Javascript
详解vue2.0 资源文件assets和static的区别
Nov 27 Javascript
浅谈redux, koa, express 中间件实现对比解析
May 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的FTP学习(二)
2006/10/09 PHP
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
php共享内存段示例分享
2014/01/20 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
Yii快速入门经典教程
2015/12/28 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
JS常用函数使用指南
2014/11/23 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
django 发送邮件和缓存的实现代码
2018/07/18 Python
Python配置文件处理的方法教程
2019/08/29 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
Python 如何批量更新已安装的库
2020/05/26 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
医学专业自荐信
2014/06/14 职场文书
旅游投诉信范文
2015/07/02 职场文书
五年级数学教学反思
2016/02/16 职场文书
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
vue 自定义组件添加原生事件
2022/04/21 Vue.js
python读取mat文件生成h5文件的实现
2022/07/15 Python