如何使用CSS和jQuery隐藏和显示选项卡内容

演示:尝试单击选项卡

当我开发foodshaker.com时 。 我需要创建一个多标签导航来隐藏和显示标签内容。 为了开发轻量级的多表,我决定使用jQuery和CSS来简化它。

1.解释

以下是导航示例:

<div>
    <ul class="nav nav-tabs">
        <li class="active">
            <a href="#tab1">Show Tab 1</a>
        </li>
        <li>
            <a href="#tab2">Show Tab 2</a>
        </li>
        <li>
            <a href="#tab3">Show Tab 3</a>
        </li>
    </ul>
</div>

必须指出要显示的导航,因此我使用“活动” CSS类名来表示它。 “ nav nav-tabs”用于设置导航的外观。 每个导航链接<a>具有选项卡内容jQuery选择器的目标。

例如: href="#tab1" ,href属性的值将用于创建jQuery对象并显示内容。

以下是标签内容的示例:

<section id="tab1" class="tab-content active">
    <div>
        Content in tab 1
    </div>
</section>
<section id="tab2" class="tab-content hide">
    <div>
        Content in tab 2
    </div>
</section>
<section id="tab3" class="tab-content hide">
    <div>
        Content in tab 3
    </div>
</section>

CSS类名“ hide”用于将显示样式设置为无,其中:

.tab-content.hide{
    display: none;
}

CSS类名“ active”用于设置要显示的显示的样式,其中:

.tab-content.active{
    display: block;
}

为了简化导航的click事件,我们需要如下所示的“ click”事件:

$('.nav-tabs > li > a').click(function(event){
   //...... logic to hide and show tab content
}

首先,我们需要查找显示的导航和显示标签内容。 从而:

//get displaying tab content jQuery selector
var active_tab_selector = $('.nav-tabs > li.active > a').attr('href');

//hide displaying tab content
$(active_tab_selector).removeClass('active');
$(active_tab_selector).addClass('hide');

然后,我们找到激活的导航并将其更改为不活动:

//find actived navigation and remove 'active' css
var actived_nav = $('.nav-tabs > li.active');
actived_nav.removeClass('active');

此外,我们需要将点击的导航更改为活动状态:

//add 'active' css into clicked navigation
$(this).parents('li').addClass('active');

显示目标标签内容:

var target_tab_selector = $(this).attr('href');
$(target_tab_selector).removeClass('hide');
$(target_tab_selector).addClass('active');

2.完整的例子

完整的HTML源代码以使用CSS和jQuery隐藏和显示选项卡内容。

<html>
  <head>
	<title>How to use CSS and jQuery to hide and show tab content</title>
		
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
	<script>
	$(document).ready(function() {
		$('.nav-tabs > li > a').click(function(event){
		event.preventDefault();//stop browser to take action for clicked anchor
					
		//get displaying tab content jQuery selector
		var active_tab_selector = $('.nav-tabs > li.active > a').attr('href');					
					
		//find actived navigation and remove 'active' css
		var actived_nav = $('.nav-tabs > li.active');
		actived_nav.removeClass('active');
					
		//add 'active' css into clicked navigation
		$(this).parents('li').addClass('active');
					
		//hide displaying tab content
		$(active_tab_selector).removeClass('active');
		$(active_tab_selector).addClass('hide');
					
		//show target tab content
		var target_tab_selector = $(this).attr('href');
		$(target_tab_selector).removeClass('hide');
		$(target_tab_selector).addClass('active');
	     });
	  });
	</script>
		<style>
			/** Start: to style navigation tab **/
			.nav {
			  margin-bottom: 18px;
			  margin-left: 0;
			  list-style: none;
			}

			.nav > li > a {
			  display: block;
			}
			
			.nav-tabs{
			  *zoom: 1;
			}

			.nav-tabs:before,
			.nav-tabs:after {
			  display: table;
			  content: "";
			}

			.nav-tabs:after {
			  clear: both;
			}

			.nav-tabs > li {
			  float: left;
			}

			.nav-tabs > li > a {
			  padding-right: 12px;
			  padding-left: 12px;
			  margin-right: 2px;
			  line-height: 14px;
			}

			.nav-tabs {
			  border-bottom: 1px solid #ddd;
			}

			.nav-tabs > li {
			  margin-bottom: -1px;
			}

			.nav-tabs > li > a {
			  padding-top: 8px;
			  padding-bottom: 8px;
			  line-height: 18px;
			  border: 1px solid transparent;
			  -webkit-border-radius: 4px 4px 0 0;
				 -moz-border-radius: 4px 4px 0 0;
					  border-radius: 4px 4px 0 0;
			}

			.nav-tabs > li > a:hover {
			  border-color: #eeeeee #eeeeee #dddddd;
			}

			.nav-tabs > .active > a,
			.nav-tabs > .active > a:hover {
			  color: #555555;
			  cursor: default;
			  background-color: #ffffff;
			  border: 1px solid #ddd;
			  border-bottom-color: transparent;
			}
			
			li {
			  line-height: 18px;
			}
			
			.tab-content.active{
				display: block;
			}
			
			.tab-content.hide{
				display: none;
			}
			
			
			/** End: to style navigation tab **/
		</style>
	</head>
	<body>
		<div>
			<ul class="nav nav-tabs">
				<li class="active">
					<a href="#tab1">Show Tab 1</a>
				</li>
				<li>
					<a href="#tab2">Show Tab 2</a>
				</li>
				<li>
					<a href="#tab3">Show Tab 3</a>
				</li>
			</ul>	
		</div>
		<section id="tab1" class="tab-content active">
			<div>
				Content in tab 1
			</div>
		</section>
		<section id="tab2" class="tab-content hide">
			<div>
				Content in tab 2
			</div>
		</section>
		<section id="tab3" class="tab-content hide">
			<div>
				Content in tab 3
			</div>
		</section>
	</body>
</html>

下载源代码

下载它- 如何使用CSS和jQuery隐藏和显示选项卡content.zip (1 KB)

翻译自: https://mkyong.com/jquery/how-to-use-css-and-jquery-to-hide-and-show-tab-content/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值