从 jquery 加载选项卡时未显示所选按钮
Button not showing selected on tab load from jquery
当我正常加载页面时,它会显示更正。但是,当尝试通过 url IE:page.php#tab2 加载选项卡时,选项卡导航不会 select 我当前所在的选项卡,而是加载默认选项卡“tab1”
jquery:
$(document).ready(function() {
//When page loads...
$(".tab_content").hide(); //Hide all content
$("ul.tabs li:first").addClass("active").show(); //Activate first tab
$(".tab_content:first").show(); //Show first tab content
var tabId = location.hash; // will look something like "#h-02"
if(tabId){
$(".tab_content").hide(); //Hide all content
$(tabId).addClass("active").show(); //Activate first tab
$(tabId).show(); // this will fired only when url get hash
}
//On Click Event
$("ul.tabs li").click(function() {
$("ul.tabs li").removeClass("active"); //Remove any "active" class
$(this).addClass("active"); //Add "active" class to selected tab
$(".tab_content").hide(); //Hide all tab content
var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
$(activeTab).fadeIn(); //Fade in the active ID content
return false;
});
html:
<div id="tab2" class="tab_content">
<article class="module width_quarter">
<header><h3>GeoLocation</h3></header>
<div class="module_content">
Content added here...
</article><!-- end of styles article -->
<div class="clear"></div>
</div></div><!-- end of #tab2 -->
它在做什么...
https://i.stack.imgur.com/40Tc5.png
我想让它做什么...
https://i.stack.imgur.com/O8Fit.png
导航:
<section id="main" class="column">
<article class="module width_full">
<header><h3 class="tabs_involved">Lead ID: 993923</h3>
<ul class="tabs">
<li><a href="#tab1">Profile</a></li>
<li><a href="#tab2">Roof Information</a></li>
<li><a href="#tab3">Financials</a></li>
<li><a href="#tab4">Work Orders</a></li>
<li><a href="#tab5">Contracts</a></li>
<li><a href="#tab6">Documents</a></li>
<li><a href="#tab7">Gallery</a></li>
</ul>
</header>
由于您要执行两次相同的操作,因此最好合并为一个函数。这样做还可以帮助发现错误,因为您必须在一个地方而不是 2 个或更多地方查找
$(document).ready(function() {
$(".tab_content").hide();
let tabId = location.hash ? location.hash.replace('#', '') : 'tab1';
showTabContent(tabId)
//On Click Event
$("ul.tabs li").click(function() {
let tabId = $(this).find("a").attr("href").replace('#', '');
showTabContent(tabId);
return false
});
});
function showTabContent(tabId) {
$("ul.tabs li").removeClass("active");
$(`a[href='#${tabId}']`).closest('li').addClass("active");
$(".tab_content").hide(); //Hide all tab content
$(`#${tabId}`).fadeIn(); //Fade in the active ID content
}
.tabs li.active a {
background: #000;
color: #fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="main" class="column">
<article class="module width_full">
<header>
<h3 class="tabs_involved">Lead ID: 993923</h3>
<ul class="tabs">
<li><a href="#tab1">Profile</a></li>
<li><a href="#tab2">Roof Information</a></li>
<li><a href="#tab3">Financials</a></li>
<li><a href="#tab4">Work Orders</a></li>
<li><a href="#tab5">Contracts</a></li>
<li><a href="#tab6">Documents</a></li>
<li><a href="#tab7">Gallery</a></li>
</ul>
</header>
<div id="tab1" class="tab_content">
<article class="module width_quarter">
<header>
<h3>Tab 1</h3>
</header>
<div class="module_content">
Content added here...
</article>
<!-- end of styles article -->
<div class="clear"></div>
</div>
<div id="tab2" class="tab_content">
<article class="module width_quarter">
<header>
<h3>GeoLocation</h3>
</header>
<div class="module_content">
Content added here...
</article>
<!-- end of styles article -->
<div class="clear"></div>
</div>
<!-- end of #tab2 -->
当我正常加载页面时,它会显示更正。但是,当尝试通过 url IE:page.php#tab2 加载选项卡时,选项卡导航不会 select 我当前所在的选项卡,而是加载默认选项卡“tab1”
jquery:
$(document).ready(function() {
//When page loads...
$(".tab_content").hide(); //Hide all content
$("ul.tabs li:first").addClass("active").show(); //Activate first tab
$(".tab_content:first").show(); //Show first tab content
var tabId = location.hash; // will look something like "#h-02"
if(tabId){
$(".tab_content").hide(); //Hide all content
$(tabId).addClass("active").show(); //Activate first tab
$(tabId).show(); // this will fired only when url get hash
}
//On Click Event
$("ul.tabs li").click(function() {
$("ul.tabs li").removeClass("active"); //Remove any "active" class
$(this).addClass("active"); //Add "active" class to selected tab
$(".tab_content").hide(); //Hide all tab content
var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
$(activeTab).fadeIn(); //Fade in the active ID content
return false;
});
html:
<div id="tab2" class="tab_content">
<article class="module width_quarter">
<header><h3>GeoLocation</h3></header>
<div class="module_content">
Content added here...
</article><!-- end of styles article -->
<div class="clear"></div>
</div></div><!-- end of #tab2 -->
它在做什么... https://i.stack.imgur.com/40Tc5.png
我想让它做什么... https://i.stack.imgur.com/O8Fit.png
导航:
<section id="main" class="column">
<article class="module width_full">
<header><h3 class="tabs_involved">Lead ID: 993923</h3>
<ul class="tabs">
<li><a href="#tab1">Profile</a></li>
<li><a href="#tab2">Roof Information</a></li>
<li><a href="#tab3">Financials</a></li>
<li><a href="#tab4">Work Orders</a></li>
<li><a href="#tab5">Contracts</a></li>
<li><a href="#tab6">Documents</a></li>
<li><a href="#tab7">Gallery</a></li>
</ul>
</header>
由于您要执行两次相同的操作,因此最好合并为一个函数。这样做还可以帮助发现错误,因为您必须在一个地方而不是 2 个或更多地方查找
$(document).ready(function() {
$(".tab_content").hide();
let tabId = location.hash ? location.hash.replace('#', '') : 'tab1';
showTabContent(tabId)
//On Click Event
$("ul.tabs li").click(function() {
let tabId = $(this).find("a").attr("href").replace('#', '');
showTabContent(tabId);
return false
});
});
function showTabContent(tabId) {
$("ul.tabs li").removeClass("active");
$(`a[href='#${tabId}']`).closest('li').addClass("active");
$(".tab_content").hide(); //Hide all tab content
$(`#${tabId}`).fadeIn(); //Fade in the active ID content
}
.tabs li.active a {
background: #000;
color: #fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="main" class="column">
<article class="module width_full">
<header>
<h3 class="tabs_involved">Lead ID: 993923</h3>
<ul class="tabs">
<li><a href="#tab1">Profile</a></li>
<li><a href="#tab2">Roof Information</a></li>
<li><a href="#tab3">Financials</a></li>
<li><a href="#tab4">Work Orders</a></li>
<li><a href="#tab5">Contracts</a></li>
<li><a href="#tab6">Documents</a></li>
<li><a href="#tab7">Gallery</a></li>
</ul>
</header>
<div id="tab1" class="tab_content">
<article class="module width_quarter">
<header>
<h3>Tab 1</h3>
</header>
<div class="module_content">
Content added here...
</article>
<!-- end of styles article -->
<div class="clear"></div>
</div>
<div id="tab2" class="tab_content">
<article class="module width_quarter">
<header>
<h3>GeoLocation</h3>
</header>
<div class="module_content">
Content added here...
</article>
<!-- end of styles article -->
<div class="clear"></div>
</div>
<!-- end of #tab2 -->