【mui】 事件管理及自定義事件詳解
阿新 • • 發佈:2019-01-09
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