MUI事件管理
模块:事件管理
http://dev.dcloud.net.cn/mui/event/
事件绑定:
除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实现批量元素的事件绑定。
.on(event,select,handler);
//event: type:string,需要监听的事件名称,例如:"tap";
//select:type:string,选择器
//handler:type:function()事件触发时的回调函数,通过回调中的event参数可以获得事件详情
示例:
mui(".mui-table-view").on('tap','.mui-table-view-cell',function(){
//获取id
var id = this.getAttribute("id");
//传值给详情页面,通知加载新数据
mui.fire(detail,'getDetail',{id:id});
//打开新闻详情
mui.openWindow({
id:'detail',
url:'detail.html'
});
})
事件取消:
使用on()方法绑定事件后,若希望取消绑定,则可以使用off()方法。 off()方法根据传入参数的不同,有不同的实现逻辑。
.off(event,select,handler);
.off(event,select);
.off(event);
.off();//空参数,删除该元素上所有事件
//event: type:string,需取消绑定的事件名称,例如:'tap';
//select:type:string,选择器
//handler:type:function()之前绑定到该元素上的事件函数,不支持匿名函数
具体示例:
<script type="text/javascript">
mui("#list").on("tap","li",foo_1);//点击li时,执行foo_1函数
mui("#list").on("tap","li",foo_2);//点击li时,执行foo_2函数
function foo_1(){console.log("foo_1 execute");}
function foo_2(){console.log("foo_2 execute");}
// 第一种:off(event,selector,handle)适用于取消对应选择器上特定事件所执行的特定回调,例如:
mui("#list").off("tap","li",foo_1); //点击li时,不再执行foo_1函数,但会继续执行foo_2函数
// 第二种:off(event,selector)适用于取消对应选择器上特定事件的所有回调,例如:
mui("#list").off("tap","li");//点击li时,foo_2、foo_2两个函数均不再执行
// 第三种:off(event)适用于取消当前元素上绑定的特定事件的所有回调,例如:
mui("#list").off("tap");//点击li时,不再执行foo_1函数;点击p时,也不再执行foo_3函数
// 第四种:off()适用于取消当前元素上绑定的所有事件回调,例如:
mui("#list").off();//点击li时,不再执行foo_1函数;点击p时,也不再执行foo_3函数;双击li时,也不再执行foo_4函数;
</script>
事件触发:
使用mui.trigger()方法可以动态触发特定DOM元素上的事件。
<script type="text/javascript">
.trigger(element,event,data);
//element:type: Element;触发事件的DOM元素
//event:type: String;事件名字,例如:'tap'、'swipeleft'
//data:type: Object; 需要传递给事件的业务参数
</script>
示例:自动触发按钮的点击事件
var btn = document.getElementById("submit");
//监听点击事件
btn.addEventListener("tap",function () {
console.log("tap event trigger");
});
//触发submit按钮的点击事件
mui.trigger(btn,'tap');
手势事件:
在开发移动端的应用时,会用到很多的手势操作,比如滑动、长按等,为了方便开放者快速集成这些手势,mui内置了常用的手势事件,目前支持的手势事件见如下列表:
分类 | 参数 | 描述 |
---|---|---|
点击 | tap | 单击屏幕 |
doubletap | 双击屏幕 | |
长按 | longtap | 长按屏幕 |
hold | 按住屏幕 | |
release | 离开屏幕 | |
滑动 | swipeleft | 向左滑动 |
swiperight | 向右滑动 | |
swipeup | 向上滑动 | |
swipedown | 向下滑动 | |
拖动 | dragstart | 开始拖动 |
drag | 拖动中 | |
dragend | 拖动结束 |
手势事件配置:
根据使用频率,mui默认会监听部分手势事件,如点击、滑动事件;为了开发出更高性能的moble App,mui支持用户根据实际业务需求,通过mui.init方法中的gestureConfig参数,配置具体需要监听的手势事件。
mui.init({
gestureConfig:{
tap: true, //默认为true
doubletap: true, //默认为false
longtap: true, //默认为false
swipe: true, //默认为true
drag: true, //默认为true
hold:false,//默认为false,不监听
release:false//默认为false,不监听
}
});
注意:dragstart、drag、dragend共用drag开关,swipeleft、swiperight、swipeup、swipedown共用swipe开关
事件监听:
单个元素上的事件监听,直接使用addEventListener()即可,如下:
elem.addEventListener("swipeleft",function(){
console.log("你正在向左滑动");
});
若多个元素执行相同逻辑,则建议使用事件绑定(on()) ;
自定义事件:仅能在5+ App及流应用中使用(因为是多webview之间传值,故无法在手机浏览器、微信中使用);
http://dev.dcloud.net.cn/mui/event/#customevent
MUI事件管理的更多相关文章
- mui 事件管理及自定义事件详解
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 系统事件管理(Events) ---- HTML5+
模块:events Events模块管理客户端事件,包括系统事件,如扩展API加载完毕.程序前后台切换等. 比如说:网络的链接的和断开这种事件,系统从前台走到后台这种事件: 不包括:点击和滑动页面事件 ...
- DCloud-MUI:事件管理
ylbtech-DCloud-MUI:事件管理 极简的JS函数 1.返回顶部 1.事件绑定 除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实 ...
- JavaScript 事件管理
在设计JavaScript xxsdk的时候考虑到能让调用者参与到工作流程中来,开始用了回调函数.如下: this.foo = function(args,callbackFn) { //do som ...
- jquery技巧之让任何组件都支持类似DOM的事件管理
本文介绍一个jquery的小技巧,能让任意组件对象都能支持类似DOM的事件管理,也就是说除了派发事件,添加或删除事件监听器,还能支持事件冒泡,阻止事件默认行为等等.在jquery的帮助下,使用这个方法 ...
- Redis事件管理(二)
Redis的定时器是自己实现的,不是很复杂.说说具体的实现吧. 定时器的存储维护采用的是普通的单向链表结构,具体节点定义为: /*时间定时器结构体*/ typedef struct aeTimeEve ...
- Redis事件管理(一)
Redis统一的时间管理器,同时管理文件事件和定时器, 这个管理器的定义: #if defined(__APPLE__) #define HAVE_TASKINFO 1 #endif /* Test ...
- Redis事件管理(三)
Redis的事件管理和定时器的管理都是自己来实现的,Redis的事件管理分为两部分,一部分是封装了系统的异步事件API,还有一部分是在这基础上封装了一个通用的事件管理器,根据具体的系统来决定具体使用哪 ...
- Backbone事件管理——Backbone.Events模块API结构
模块Backbone.Events的事件管理是通过Backbone提供的Events API来实现的,该API在1.0版本之前仅仅提供了几个基本的方法,如on.off.trigger.once分别执行 ...
随机推荐
- openfire安装配置完全教程
Java领域的IM解决方案 Java领域的即时通信的解决方案可以考虑openfire+spark+smack. Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端,最新版本是3. ...
- 说说自己对hibernate一级、二级、查询、缓存的理解。
说说自己对hibernate一级.二级.查询.缓存的理解. 2016-03-14 21:36 421人阅读 评论(0) 收藏 举报 分类: web开发(19) 版权声明:本文为博主原创文章,未经博 ...
- 20160216.CCPP体系具体解释(0026天)
程序片段(01):01.MemCpy.c 内容概要:内存拷贝 #include <stdio.h> #include <stdlib.h> #include <memor ...
- Altera特殊管脚的使用(适用全系列Altera FPGA,MSEL区别除外)-来自altera论坛
1.I/O, ASDO 在AS 模式下是专用输出脚,在PS 和JTAG 模式下可以当I/O 脚来用.在AS 模式下,这个脚是CII 向串行配置芯片发送控制信号的脚.也是用来从配置芯片中读配置数据的脚 ...
- pacbio 原始下机数据h5 文件简介
pacbio 采用hdf5文件格式保存原始的下机数据,对于RS 测序系统而言,会产生一个 bas.h5 的文件; 以bas.h5 文件为例,看一下有下机数据中保存了那些信息 h5dump 工具可以用来 ...
- par函数bty参数-控制绘图边框
bty 可以看作box type 的缩写,控制绘图边框的显示,取值范围为o, l, u, c, ], n 默认值为"o", 代码示例: par(bty = "o" ...
- 关于MySQL的几个命令之load
1.记录当前操作命令
- Getting SharePoint objects (spweb, splist, splistitem) from url string
You basically get anything in the object model with one full url: //here is the site for the url usi ...
- Dll 使用 PChar 参数的小例子 - 回复 "linximf" 的问题
本例效果图: Dll 文件: library Lib; uses SysUtils, Classes; {$R *.res} procedure Test(p: PChar); const T ...
- [extjs] ExtJS 4.2 开发环境搭建
到官网下载Extjs ,现在最新版的是Ext5.1. 这里用ext4.2演示开发.http://extjs.org.cn/. EXT4.1 在线API 项目结构中ext4.2导入的资源文件: 第一个页 ...