巧用ui.tabs.js生成二级菜单

利用ui.tabs.js生成一级菜单,一般都很简单。

不过实际应用中,二级菜单更具备实用性,用ui.tabs.js达到目的也很简单。

以下示例在jquery1.3.2和jquery ui1.7.2中通过。

 

javascript导入如下:

<script language="javascript" src="jquery-1.3.2.min.js"></script>
<script language="javascript" src="ui.core.js"></script>
<script language="javascript" src="ui.tabs.js"></script>

 

css导入如下:

<link type="text/css" href="css/ui.core.css" rel="stylesheet" />
<link type="text/css" href="css/ui.tabs.css" rel="stylesheet" />
<link type="text/css" href="css/ui.theme.css" rel="stylesheet" />
<link type="text/css" href="css/demos.css" rel="stylesheet" />

其中demos.css是jquery.ui下载包中示例的样式,里面包括字体的定义,可以用自己定义的。

 

一级菜单定义如下:

<div id="tabsEx1">
<input type="button" onclick="$('#tabsEx1 > ul').tabs('add', '#appended-tab', 'New Tab');" value="Add new tab">
<input type="button" onclick="$('#tabsEx1 > ul').tabs('add', '#inserted-tab', 'New Tab', 1);" value="Insert tab">
<input type="button" onclick="$('#tabsEx1 > ul').tabs('disable', 1);" value="Disable tab 2">
<input type="button" onclick="$('#tabsEx1 > ul').tabs('enable', 1);" value="Enable tab 2">
<input type="button" onclick="$('#tabsEx1 > ul').tabs('select', 2);" value="Select tab 3">
<br><br>
<ul style="height: 30px;">
<li><a href="#fragment-1">
<span>One</span></a>
</li>
<li><a href="#fragment-2"><span>Two</span></a></li>
<li><a href="#fragment-3"><span>Three</span></a></li>
</ul>

//这里正常情况是应该填入id分别为fragment-1、fragment-2、fragment-3的div
</div>

 

上面一级菜单定义缺少了内容模版格式的定义,我们在其中填入二级菜单内容定义:

 <div id="fragment-1" class="fragment">
 <ul style="height: 30px;">
 <li><a href="#fragment-content"><span>One-1</span></a></li>
 <li><a href="#fragment-content"><span>One-2</span></a></li>
 <li><a href="#fragment-content"><span>One-3</span></a></li>
 </ul>
 </div>
 <div id="fragment-2" class="fragment">
 <ul style="height: 30px;">
 <li><a href="#fragment-content"><span>Two-1</span></a></li>
 <li><a href="#fragment-content"><span>Two-2</span></a></li>
 <li><a href="#fragment-content"><span>Two-3</span></a></li>
 </ul>
 </div>
 <div id="fragment-3" class="fragment">
 <ul style="height: 30px;">
 <li><a href="#fragment-content"><span>Three-1</span></a></li>
 <li><a href="#fragment-content"><span>Three-2</span></a></li>
 <li><a href="#fragment-content"><span>Three-3</span></a></li>
 </ul>
  </div>

<div id="fragment-content"> <p>Three</p> </div>
可以看到,二级菜单的内容模版定义均为<div id="fragment-content">......</div>。

在实际应用中,菜单最终刷新的内容区域仅采用一个DIV定义来实现是最为方便的。

基于以上的HTML格式,我们还需要进行tabs定义。

 

$(function(){
 $("#tabsEx1").tabs({
  show:function(event,ui){
   var idx = ui.index;
   $("#fragment-"+(idx+1)).tabs("select",0);
  },
  //全部置为-1,是让一级菜单的初始化选择能触发show事件
  selected:-1
 });
 $(".fragment").tabs({
  select:function(event,ui){
   //这里最适合用来通过判断来显示DIV ID为fragment-content的内容
   $("#fragment-content").html("successfully load fragment content-"+$("#tabsEx1").tabs("option","selected")+":"+ui.index);
  },
  //全部置为-1,是让一级菜单的初始化触发show事件,其中的执行动作能够触发二级菜单的select事件
  selected:-1
 });
 $("#tabsEx1").tabs("select",0);
});

 

以上示例测试过,如果有什么问题,可以留言。

 

你可能感兴趣的:(JavaScript,jquery,UI,css)