JQuery制作的选项卡,重点体现在JS与HTML的分离
2008-11-12 16:32
525 查看
基于JQuery实现的一个选项卡效果,重点体现在HTML里没有内联事件处理程序,而是定义在js文件里,做到行为与结构的分离。在实际应用过程中,只要保证选项卡模块结构代码的完整性,就可以任意添加N个同类选项卡,不需要手动在HTML里绑定事件处理程序以及给要隐藏显示的内容层添加ID。
#xzw_box * {margin:0; padding:0}
#xzw_box ul, #xzw_box li { list-style:none; list-style-type:none}
#xzw_box {width:450px; height:150px; border:1px solid #ccc; margin:10px; font-size:12px; font-family:Verdana, Arial, Helvetica, sans-serif; background:#fff}
#xzw_box .tagMenu {height:28px; line-height:28px; background:#efefef; position:relative; border-bottom:1px solid #999}
#xzw_box .tagMenu h2 {font-size:12px; padding-left:10px;}
#xzw_box .tagMenu ul {position:absolute; left:100px; bottom:-1px; height:26px;}
#xzw_box ul.menu li {float:left; margin-bottom:1px; line-height:16px; height:14px; margin:5px 0 0 -1px; border-left:1px solid #999; text-align:center; padding:0 12px; cursor:pointer}
#xzw_box ul.menu li.current {border:1px solid #999; border-bottom:none; background:#fff; height:25px; line-height:26px; margin:0}
#xzw_box .content { padding:10px}
#xzw_box .content .layout {display:none}
Label 1.2
Label 1.3
Label 1.4
infomation 1.1
infomation 1.2
infomation 1.3
infomation 1.4
Label 2.2
Label 2.3
Label 2.4
infomation 2.1
infomation 2.2
infomation 2.3
infomation 2.4
Javascript(jquery)代码如下:
1 <script language="javascript" type="text/javascript">
2 $(document).ready(function(){
3 $("ul.menu li:first-child").addClass("current");
4 $("div.content").find("div.layout:not(:first-child)").hide();
5 $("div.content div.layout").attr("id", function(){return idNumber("No")+ $("div.content div.layout").index(this)});
6 $("ul.menu li").click(function(){
7 var c = $("ul.menu li");
8 var index = c.index(this);
9 var p = idNumber("No");
show(c,index,p);
});
function show(controlMenu,num,prefix){
var content= prefix + num;
$('#'+content).siblings().hide();
$('#'+content).show();
controlMenu.eq(num).addClass("current").siblings().removeClass("current");
};
function idNumber(prefix){
var idNum = prefix;
return idNum;
};
});
</script>
CSS样式代码如下:
1 <style type="text/css">
2 * {margin:0; padding:0}
3 ul,li { list-style:none}
4 .box {width:450px; height:150px; border:1px solid #ccc; margin:10px; font-size:12px; font-family:Verdana, Arial, Helvetica, sans-serif}
5 .tagMenu {height:28px; line-height:28px; background:#efefef; position:relative; border-bottom:1px solid #999}
6 .tagMenu h2 {font-size:12px; padding-left:10px;}
7 .tagMenu ul {position:absolute; left:100px; bottom:-1px; height:26px;}
8 ul.menu li {float:left; margin-bottom:1px; line-height:16px; height:14px; margin:5px 0 0 -1px; border-left:1px solid #999; text-align:center; padding:0 12px; cursor:pointer}
9 ul.menu li.current {border:1px solid #999; border-bottom:none; background:#fff; height:25px; line-height:26px; margin:0}
.content { padding:10px}
</style>
HTML结构代码如下:
1 <body>
2 <div class="box">
3 <div class="tagMenu">
4 <h2>No.1 Menu</h2>
5 <ul class="menu">
6 <li>Label 1.1</li>
7 <li>Label 1.2</li>
8 <li>Label 1.3</li>
9 <li>Label 1.4</li>
</ul>
</div>
<div class="content">
<div class="layout">infomation 1.1</div>
<div class="layout">infomation 1.2</div>
<div class="layout">infomation 1.3</div>
<div class="layout">infomation 1.4</div>
</div>
</div>
<div class="box">
<div class="tagMenu">
<h2>No.2 Menu</h2>
<ul class="menu">
<li>Label 2.1</li>
<li>Label 2.2</li>
<li>Label 2.3</li>
<li>Label 2.4</li>
</ul>
</div>
<div class="content">
<div class="layout">infomation 2.1</div>
<div class="layout">infomation 2.2</div>
<div class="layout">infomation 2.3</div>
<div class="layout">infomation 2.4</div>
</div>
</div>
</body>
改进版:JQuery制作的选项卡改进版
#xzw_box * {margin:0; padding:0}
#xzw_box ul, #xzw_box li { list-style:none; list-style-type:none}
#xzw_box {width:450px; height:150px; border:1px solid #ccc; margin:10px; font-size:12px; font-family:Verdana, Arial, Helvetica, sans-serif; background:#fff}
#xzw_box .tagMenu {height:28px; line-height:28px; background:#efefef; position:relative; border-bottom:1px solid #999}
#xzw_box .tagMenu h2 {font-size:12px; padding-left:10px;}
#xzw_box .tagMenu ul {position:absolute; left:100px; bottom:-1px; height:26px;}
#xzw_box ul.menu li {float:left; margin-bottom:1px; line-height:16px; height:14px; margin:5px 0 0 -1px; border-left:1px solid #999; text-align:center; padding:0 12px; cursor:pointer}
#xzw_box ul.menu li.current {border:1px solid #999; border-bottom:none; background:#fff; height:25px; line-height:26px; margin:0}
#xzw_box .content { padding:10px}
#xzw_box .content .layout {display:none}
No.1 Menu
Label 1.1Label 1.2
Label 1.3
Label 1.4
infomation 1.1
infomation 1.2
infomation 1.3
infomation 1.4
No.2 Menu
Label 2.1Label 2.2
Label 2.3
Label 2.4
infomation 2.1
infomation 2.2
infomation 2.3
infomation 2.4
Javascript(jquery)代码如下:
1 <script language="javascript" type="text/javascript">
2 $(document).ready(function(){
3 $("ul.menu li:first-child").addClass("current");
4 $("div.content").find("div.layout:not(:first-child)").hide();
5 $("div.content div.layout").attr("id", function(){return idNumber("No")+ $("div.content div.layout").index(this)});
6 $("ul.menu li").click(function(){
7 var c = $("ul.menu li");
8 var index = c.index(this);
9 var p = idNumber("No");
show(c,index,p);
});
function show(controlMenu,num,prefix){
var content= prefix + num;
$('#'+content).siblings().hide();
$('#'+content).show();
controlMenu.eq(num).addClass("current").siblings().removeClass("current");
};
function idNumber(prefix){
var idNum = prefix;
return idNum;
};
});
</script>
CSS样式代码如下:
1 <style type="text/css">
2 * {margin:0; padding:0}
3 ul,li { list-style:none}
4 .box {width:450px; height:150px; border:1px solid #ccc; margin:10px; font-size:12px; font-family:Verdana, Arial, Helvetica, sans-serif}
5 .tagMenu {height:28px; line-height:28px; background:#efefef; position:relative; border-bottom:1px solid #999}
6 .tagMenu h2 {font-size:12px; padding-left:10px;}
7 .tagMenu ul {position:absolute; left:100px; bottom:-1px; height:26px;}
8 ul.menu li {float:left; margin-bottom:1px; line-height:16px; height:14px; margin:5px 0 0 -1px; border-left:1px solid #999; text-align:center; padding:0 12px; cursor:pointer}
9 ul.menu li.current {border:1px solid #999; border-bottom:none; background:#fff; height:25px; line-height:26px; margin:0}
.content { padding:10px}
</style>
HTML结构代码如下:
1 <body>
2 <div class="box">
3 <div class="tagMenu">
4 <h2>No.1 Menu</h2>
5 <ul class="menu">
6 <li>Label 1.1</li>
7 <li>Label 1.2</li>
8 <li>Label 1.3</li>
9 <li>Label 1.4</li>
</ul>
</div>
<div class="content">
<div class="layout">infomation 1.1</div>
<div class="layout">infomation 1.2</div>
<div class="layout">infomation 1.3</div>
<div class="layout">infomation 1.4</div>
</div>
</div>
<div class="box">
<div class="tagMenu">
<h2>No.2 Menu</h2>
<ul class="menu">
<li>Label 2.1</li>
<li>Label 2.2</li>
<li>Label 2.3</li>
<li>Label 2.4</li>
</ul>
</div>
<div class="content">
<div class="layout">infomation 2.1</div>
<div class="layout">infomation 2.2</div>
<div class="layout">infomation 2.3</div>
<div class="layout">infomation 2.4</div>
</div>
</div>
</body>
改进版:JQuery制作的选项卡改进版
相关文章推荐
- 结构/表现/行为完全分离的选项卡(jquery版和原生JS版)
- Html js和jquery制作导航条时鼠标快速滑动导致下拉菜单不断执行
- 简单选项卡 js和jquery制作方法分享
- 结构/表现/行为完全分离的选项卡(jquery版和原生JS版)
- html+css+js(+JQuery)制作扑克牌图片切换效果
- 【原创】cs+html+js+css模式(六):改造ajax.js,从原来的原生态js修改为依赖于jquery插件
- js与jquery的选项卡切换
- JQuery 制作的选项卡改进版之改进版
- js+html+jquery 个人笔记
- 用JS制作9种弹出小窗口(HTML)
- jsForm - Html Form via JSON with jQuery
- 制作一张简单的网页(HTML+CSS+JS)【1】
- 【js与jquery】注册会员时密码强度提示信息的制作
- 5 HTML&JS等前端知识系列之jquery基础
- 使用jquery-tmpl使JavaScript与HTML分离
- javascript / js / jquery的HtmlEncode
- html+jquery制作网页地图
- 【JS】可多次使用的jQuery tab选项卡