基于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、付费专栏及课程。

余额充值