模块事件管理

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事件管理的更多相关文章

  1. mui 事件管理及自定义事件详解

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. 系统事件管理(Events) ---- HTML5+

    模块:events Events模块管理客户端事件,包括系统事件,如扩展API加载完毕.程序前后台切换等. 比如说:网络的链接的和断开这种事件,系统从前台走到后台这种事件: 不包括:点击和滑动页面事件 ...

  3. DCloud-MUI:事件管理

    ylbtech-DCloud-MUI:事件管理 极简的JS函数 1.返回顶部 1.事件绑定 除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实 ...

  4. JavaScript 事件管理

    在设计JavaScript xxsdk的时候考虑到能让调用者参与到工作流程中来,开始用了回调函数.如下: this.foo = function(args,callbackFn) { //do som ...

  5. jquery技巧之让任何组件都支持类似DOM的事件管理

    本文介绍一个jquery的小技巧,能让任意组件对象都能支持类似DOM的事件管理,也就是说除了派发事件,添加或删除事件监听器,还能支持事件冒泡,阻止事件默认行为等等.在jquery的帮助下,使用这个方法 ...

  6. Redis事件管理(二)

    Redis的定时器是自己实现的,不是很复杂.说说具体的实现吧. 定时器的存储维护采用的是普通的单向链表结构,具体节点定义为: /*时间定时器结构体*/ typedef struct aeTimeEve ...

  7. Redis事件管理(一)

    Redis统一的时间管理器,同时管理文件事件和定时器, 这个管理器的定义: #if defined(__APPLE__) #define HAVE_TASKINFO 1 #endif /* Test ...

  8. Redis事件管理(三)

    Redis的事件管理和定时器的管理都是自己来实现的,Redis的事件管理分为两部分,一部分是封装了系统的异步事件API,还有一部分是在这基础上封装了一个通用的事件管理器,根据具体的系统来决定具体使用哪 ...

  9. Backbone事件管理——Backbone.Events模块API结构

    模块Backbone.Events的事件管理是通过Backbone提供的Events API来实现的,该API在1.0版本之前仅仅提供了几个基本的方法,如on.off.trigger.once分别执行 ...

随机推荐

  1. dvi 中的内容居中

    text-align:right;  文本居中 line-height:35px;*垂直居中*

  2. CSRF简单介绍及利用方法

    x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP请 ...

  3. 关于Cocos2d-x中UI按钮的定义

    1.要有两张不同状态的图片 2.定义一个MenuItemSprite的实例,把这两张图的Sprite实例放进MenuItemSprite的实例 3.把MenuItemSprite的实例放进Menu实例 ...

  4. Intellij IDEA 使用学习

    Intellij中名词解释: Project,就是一个完整的项目,类似Eclipse中的WorkSet(虽然WorkSet是人为归类的). Module,是Project中的模块,类似Eclipse中 ...

  5. Netstat命令(windows下)

    功能: 一般用于检验本机各端口的网络连接情况. 例子:检查本机3389远程连接端口是否可用 netstat -nao|find  "3389" 查看某进程使用的端口号: netst ...

  6. (转)MPEG4码流简单分析

    把MPEG4码流的分析和它的I,P,B Frame的判定方法在这里简要记录一下吧,供日后的翻看和大家的参考.   测试解码器测试了很久,由于需要将H264和MPEG4的码流进行分析和判断,并逐帧输入解 ...

  7. ubuntu 访问 共享 windows文件夹

    sudo mount -o username=*******,password=******** //192.168.1.105/迅雷下载 /mnt/

  8. R语言绘图布局

    在R语言中,par 函数可以设置图形边距,其中oma 参数设置outer margin, mar 参数设置margin, 这些边距有什么不同呢,通过box函数可以直观的看到 box 默认在当前图形绘制 ...

  9. React封装RadioGroup

    class RadioGroup extends React.Component { getRadioComponent(item, index) { return <div className ...

  10. IIS 使用多个https和通配证书解决方案

    环境:OS :WINDOWS 2008 IIS: IIS7 域名:三个二级域名 问题:由于一个网站只支持一个443,但可以通过更改配置得到绑定不同域名.但由于公用证书,所以问题出来.只能为一个二级域名 ...