發現最近有些人問用JQuery easyui要怎么實現左右結構的布局。就是點擊左邊的菜單在右邊的tab中打開。其實easyui要實現這種布局很簡單,只需要簡單的幾行代碼就ok了。
特意做了一個小小的demo供大家參考,還把怎么實現tab的右鍵菜單附上。
效果圖:
源碼:
js部分:
$(function () { //動態菜單數據 var treeData = [{ text : "菜單", children : [{ text : "一級菜單1", attributes : { url : "" } }, { text : "一級菜單2", attributes : { url : "" } }, { text : "一級菜單3", state : "closed", children : [{ text : "二級菜單1", attributes : { url : "" } }, { text : "二級菜單2", attributes : { url : "" } }, { text : "二級菜單3", attributes : { url : "" } } ] } ] } ]; //實例化樹形菜單 $("#tree").tree({ data : treeData, lines : true, onClick : function (node) { if (node.attributes) { Open(node.text, node.attributes.url); } } }); //在右邊center區域打開菜單,新增tab function Open(text, url) { if ($("#tabs").tabs('exists', text)) { $('#tabs').tabs('select', text); } else { $('#tabs').tabs('add', { title : text, closable : true, content : text }); } } //綁定tabs的右鍵菜單 $("#tabs").tabs({ onContextMenu : function (e, title) { e.preventDefault(); $('#tabsMenu').menu('show', { left : e.pageX, top : e.pageY }).data("tabTitle", title); } }); //實例化menu的onClick事件 $("#tabsMenu").menu({ onClick : function (item) { CloseTab(this, item.name); } }); //幾個關閉事件的實現 function CloseTab(menu, type) { var curTabTitle = $(menu).data("tabTitle"); var tabs = $("#tabs"); if (type === "close") { tabs.tabs("close", curTabTitle); return; } var allTabs = tabs.tabs("tabs"); var closeTabsTitle = []; $.each(allTabs, function () { var opt = $(this).panel("options"); if (opt.closable && opt.title != curTabTitle && type === "Other") { closeTabsTitle.push(opt.title); } else if (opt.closable && type === "All") { closeTabsTitle.push(opt.title); } }); for (var i = 0; i < closeTabsTitle.length; i++) { tabs.tabs("close", closeTabsTitle[i]); } } });
html部分:
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>JS Bin</title> <script class="jsbin" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> <link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/default/easyui.css"> <script type="text/javascript" src="http://www.jeasyui.com/easyui/jquery.easyui.min.js"></script> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <style> article, aside, figure, footer, header, hgroup, menu, nav, section { display: block; } .west{ width:200px; padding:10px; } .north{ height:100px; } </style> </head> <body class="easyui-layout"> <div region="north" class="north" title="____′↘夏悸 http://easyui.btboys.com"> <h1>最簡單的左右結構實現,及tab的右鍵菜單實現,右鍵查看源碼</h1> </div> <div region="center" title="center"> <div class="easyui-tabs" fit="true" border="false" id="tabs"> <div title="首頁"></div> </div> </div> <div region="west" class="west" title="menu"> <ul id="tree"></ul> </div> <div id="tabsMenu" class="easyui-menu" style="width:120px;"> <div name="close">關閉</div> <div name="Other">關閉其他</div> <div name="All">關閉所有</div> </div> </body> </html>