基于jQuery实现的标签页

最近在看OpenCart中的样式布局的时候学着弄了一个标签页的实现,做完之后才发现jQuery UI中已经有标签页的实现了,实现的方式也大致相同。

下面是我的实现,贴在下面以备未来使用。

HTML页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Tab Page Layout</title> <link rel="stylesheet" type="text/css" href="style.css" /> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="tabs.js"></script> </head> <body> <div class="tabs"> <div class="tabhost"> <a href="#page1" class="selected">Page 1</a> <a href="#page2">Page 2</a> <a href="#page3">Page 3</a> <a href="#page4">Page 4</a> <a href="#page5">Page 5</a> </div> <div class="tabcontent"> <div id="page1">This is Page 1!</div> <div id="page2">This is Page 2!</div> <div id="page3">This is Page 3!</div> <div id="page4">This is Page 4!</div> <div id="page5">This is Page 5!</div> </div> </div> </body> </html>
CSS样式 style.css:

body, div, a { margin: 0; padding: 0; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 16px; } .tabs { width: 600px; margin: 50px auto; } .tabhost { height: 24px; } .tabhost a { text-decoration: none; background: #f7f7f7; color: #ed6c07; padding: 5px; border-top: #dddddd 1px solid; border-left: #dddddd 1px solid; border-right: #dddddd 1px solid; } .tabhost a:hover { background: #ed6c07; color: #ffffff; padding-bottom: 6px; } .tabhost a.selected { background: #ffffff; color: #ed6c07; padding-bottom: 6px; } .tabcontent { border: 1px #dddddd solid; height: 600px; }
jQuery操作 tabs.js:

$(function() { var tabhosts = $(".tabhost a"); tabhosts.each(function() { $($(this).attr("href")).hide(); if ($(this).hasClass("selected")) { $($(this).attr("href")).show(); } $(this).click(function(event) { event.preventDefault(); if (!$(this).hasClass("selected")) { tabhosts.each(function() { $(this).removeClass("selected"); $($(this).attr("href")).hide(); }); $(this).addClass("selected"); $($(this).attr("href")).show(); } }); }); });

实现的要点在于:

1. 初始时需要用jQuery的 hide() 函数将不需要显示的标签页隐藏。(hide() 函数实际上是将元素的属性设置为:style="display: none;"。)

2. 标签采用<a>元素,通过它的 href 属性,结合 jQuery 的选择器来定位标签页元素的 id。

3. 被选中的标签拥有特定的class,“selected”。通过这个class="selected",结合 jQuery 的hasClass方法来确定哪个标签页该显示。

4. 在 jQuery 的click事件的处理函数中添加参数event,然后在函数体中使用event.preventDefault() 函数,并不会调用DOM本身的event以及event.preventDefault() 函数,而是会调用jQuery提供的preventDefault() 函数,从而达到在不同浏览器中都能阻止浏览器默认操作的目的。这样做的原因是Fire Fox不支持的DOM的event对象,而IE的event又没有preventDefault函数,这就使得单独使用event.preventDefault() 函数只会在Chrome中有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值