1. 程式人生 > >【mui】 事件管理及自定義事件詳解

【mui】 事件管理及自定義事件詳解

1、事件繫結
可以使用addEventListener()方法監聽某個特定元素上的事件外, 也可以使用.on()方法實現批量元素的事件繫結。
addEventListener示例(單個元素事件繫結):

mui.plusReady(function(){
    document.getElementById('but1').addEventListener('tap',function(){
	alert(1);});});

on()示例,適用於批量元素繫結。演示程式碼:

<divclass="mui-content"><ulid="list1"><li>
小明</li><li>小花</li><li>小萌</li></ul></div></body><scripttype="text/javascript"> mui.plusReady(function(){ mui('#list1').on('tap','li',function(){var thisHtml =this.innerHTML; alert(thisHtml);});});</script>


2、事件取消
使用on()方法繫結事件後,若希望取消繫結,則可以使用off()方法。

mui('#list1').off('tap','li');


3、事件觸發
使用mui.trigger()方法可以動態觸發特定DOM元素上的事件。

var btn = document.getElementById("submit");//監聽點選事件
btn.addEventListener("tap",function(){console.log("tap event trigger");});//觸發submit按鈕的點選事件
mui.trigger(btn,'tap');


4、手勢事件
在開發移動端的應用時,會用到很多的手勢操作,比如滑動、長按等,為了方便開放者快速整合這些手勢,mui內建了常用的手勢事件,目前支援的手勢事件見如下列表:

點選 	
tap 	單擊螢幕
doubletap 	雙擊螢幕長按 	
longtap 	長按螢幕
hold 	按住螢幕
release 	離開螢幕滑動 	
swipeleft 	向左滑動
swiperight 	向右滑動
swipeup 	向上滑動
swipedown 	向下滑動拖動 	
dragstart 	開始拖動
drag 	拖動中
dragend 	拖動結束


5、自定義事件
在App開發中,經常會遇到頁面間傳值的需求,比如從新聞列表頁進入詳情頁,需要將新聞id傳遞過去; Html5Plus規範設計了evalJS方法來解決該問題; 但evalJS方法僅接收字串引數,涉及多個引數時,需要開發人員手動拼字串; 為簡化開發,mui框架在evalJS方法的基礎上,封裝了自定義事件,通過自定義事件,使用者可以輕鬆實現多webview間資料傳遞。
新增自定義事件監聽操作和標準js事件監聽類似,可直接通過window物件新增,如下:

window.addEventListener('customEvent',function(event){mui.toast('ok');});


6、觸發自定義事件
通過mui.fire()方法可觸發目標視窗的自定義事件:
引數

target
Type:WebviewObject需傳值的目標webview
eventType:String自定義事件名稱
data
Type: JSON
json格式的資料

自定義事件完整例子
主頁面:

<divclass="mui-content"><ulid="list1"><liid="1">新聞1</li><liid="2">新聞2</li><liid="3">新聞3</li></ul></div></body><scripttype="text/javascript">
mui.init();
mui.plusReady(function(){var detailPage = mui.preload({url:'sub.html',id:'sub.html'});
  mui('#list1').on('tap','li',function(e){
    mui.fire(detailPage,'newsId',{id:this.getAttribute('id')});
    mui.openWindow({id:'sub.html'});});});</script>

子頁面

mui.plusReady(function(){
    window.addEventListener('newsId',function(event){
        console.log(event.detail.id);});});
原文:http://www.hcoder.net/tutorials/info_95.html