<!doctype html> <html> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <link href="css/mui.min.css" rel="stylesheet" /> <script src="js/mui.min.js"></script> <script type="text/javascript"> mui.init() mui.plusReady(function(){ //addEventListener 有兩個參數,一個是你要做是什么(事件),二是具體的操作 document.getElementById('btn1').addEventListener('tap',function(){ mui.toast('Ok'); }); //on元素批量綁定事件 mui('#list1').on('tap','li',function(){ //mui.toast('Ok'); //獲取點擊的內容 //這個this代表點擊那個li mui.toast(this.innerHTML); }); //off去掉事件 mui('#list1').off('tap','li'); }); </script> </head> <body> <div class="mui-content"> <button id="btn1" type="button" class="mui-btn mui-btn-blue mui-btn-block">按鈕</button> <ul class="mui-table-view" id="list1"> <li class="mui-table-view-cell">1</li> <li class="mui-table-view-cell">2</li> <li class="mui-table-view-cell">3</li> <li class="mui-table-view-cell">4</li> <li class="mui-table-view-cell">5</li> </ul> </div> </body> </html>
<script type="text/javascript"> mui.init() mui.plusReady(function(){ //如果用mui給btn綁定事件,這樣是不行的 // mui('#btn1').addEventListener('tap',function(){ // mui.toast('ok'); // }) //必須要用 document.getElementById('btn1').addEventListener('tap',function(){ mui.toast('ok'); }); }); </script> </head>
事件觸發
使用mui.trigger()方法可以動態觸發特定的Dom元素上的事件
<!doctype html> <html> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <link href="css/mui.min.css" rel="stylesheet" /> <script src="js/mui.min.js"></script> <script type="text/javascript"> mui.init() mui.plusReady(function(){ document.getElementById('btn1').addEventListener('tap',function(){ mui.toast('OK'); }); //獲取按鈕對象 var btns = document.getElementById('btn1'); //模擬點擊事件 mui.trigger(btns,'tap'); }); //頁面加載完后就會自動執行tap點擊事件 </script> </head> <body> <div class="mui-content"> <button id="btn1" type="button" class="mui-btn mui-btn-blue mui-btn-block">按鈕</button> </div> </body> </html>
手勢事件
在開發移動端的應用時,會用到很多的手勢操作,比如滑動、長按等,為了方便開放者快速集成這些手勢,mui內置了常用的手勢事件,目前支持的手勢事件見如下列表:
點擊
tap 單擊屏幕
doubletap 雙擊屏幕
長按
longtap 長按屏幕
hold 按住屏幕
release 離開屏幕
滑動
swipeleft 向左滑動
swiperight 向右滑動
swipeup 向上滑動
swipedown 向下滑動
拖動
dragstart 開始拖動
drag 拖動中
dragend 拖動結束
自定義事件
在App開發中,經常會遇到頁面間傳值的需求,比如從新聞列表頁進入詳情頁,需要將新聞id傳遞過去; Html5Plus規范設計了evalJS方法來解決該問題; 但evalJS方法僅接收字符串參數,涉及多個參數時,需要開發人員手動拼字符串; 為簡化開發,mui框架在evalJS方法的基礎上,封裝了自定義事件,通過自定義事件,用戶可以輕松實現多webview間數據傳遞。
添加自定義事件監聽操作和標准js事件監聽類似,可直接通過window對象添加,如下:
//子頁面處理方式
window.addEventListener('customEvent',function(event){mui.toast('ok');});
完整例子:
主頁面
<!doctype html> <html> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <link href="css/mui.min.css" rel="stylesheet" /> <script src="js/mui.min.js"></script> <script type="text/javascript"> mui.init() mui.plusReady(function() { //1、進行預加載 var prpage = mui.preload({ url: 'info.html', id: 'info.html' }); //預加載方法 //使用on方法統一綁定tap事件 mui('#list1').on('tap','a', function() { //myEvent自定義事件 mui.fire(prpage,'myEvent',{'title':this.innerHTML,'id':this.getAttribute('id')});//這里傳遞是li中的文字 mui.openWindow({url:'info.html',id:'info.html'}); }); }); </script> </head> <body> <div class="mui-content"> <ul class="mui-table-view" id="list1"> <li class="mui-table-view-cell"> <a class="mui-navigate-right" id="1"> Item 1 </a> </li> <li class="mui-table-view-cell"> <a class="mui-navigate-right" id="2"> Item 2 </a> </li> <li class="mui-table-view-cell"> <a class="mui-navigate-right" id="3"> Item 3 </a> </li> </ul> </div> </body> </html>
子頁面
<!doctype html> <html> <head> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <link href="css/mui.min.css" rel="stylesheet" /> <script src="js/mui.min.js"></script> <script type="text/javascript"> mui.init() mui.plusReady(function(){ //myEvent是自定義的事件 //e任性寫的,是一個傳遞過來對象 window.addEventListener('myEvent',function(e){ var title1 = mui('#title1'); title1[0].innerHTML = e.detail.title; mui.toast(e.detail.id); }) }) </script> </head> <body> <header class="mui-bar mui-bar-nav"> <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a> <h1 id="title1" class="mui-title">標題</h1> </header> </body> </html>