Javascript 如何使用jquery嵌套选项卡链接?
我对Jquery选项卡UI有问题Javascript 如何使用jquery嵌套选项卡链接?,javascript,jquery,hyperlink,tabs,nested,Javascript,Jquery,Hyperlink,Tabs,Nested,我对Jquery选项卡UI有问题 <script type="text/javascript"> $(document).ready(function() { $('.tabs').tabs(); $('.subtabs').tabs(); }); <div class="tabs"> <ul> <li><a href="#tab1">Tab1</a></li>
<script type="text/javascript">
$(document).ready(function() {
$('.tabs').tabs();
$('.subtabs').tabs();
});
<div class="tabs">
<ul>
<li><a href="#tab1">Tab1</a></li>
<li><a href="#tab2">Tab2</a></li>
</ul>
<div id="tab1">
<div class="subtabs">
<ul>
<li><a href="#subtab1">Subtab1</a></li>
<li><a href="#subtab2">Subtab2</a></li>
</ul>
<div id="subtab1">
Some content1
</div>
<div id="subtab2">
Some content2
</div>
</div>
</div>
<div id="tab2"></div>
</div>
$(文档).ready(函数(){
$('.tabs').tabs();
$('.subtabs').tabs();
});
一些内容1
一些内容2
现在,当我尝试访问page.html#subtab1这样的子选项卡时,它不起作用,
但是page.html#tab1可以工作。我做错了什么?基本上,我需要使用URL打开子选项卡
谢谢您缺少
,这将导致jQuery异常。
尝试将其添加到代码中,您的链接将起作用。我也遇到了同样的问题。我找到了一个JS修复程序。请注意,在您的示例中,第一个选项卡中有子选项卡,第一个选项卡是打开的默认选项卡。使用我的修复程序,您可以将子选项卡放置在主选项卡的任何内容中。检查Plunker的工作示例 我创建了函数
openParentTab()
,并在创建了$('.tabs,.subtabs').tabs()之后调用了这个函数代码>
如果您有一个大页面,并且发现焦点不在正确的子选项卡上,您可以添加以下jQuery(.tabs.fix”).tabs({active:tabNumber})代码>
请参阅代码:尝试$('.tabs、.subtabs').tabs()代码>我的代码中有这个标签,但仍然不起作用。这些标签看起来不错,但是当我想使用直接url(如www.site.com/page.html#subtab2)转到标签时,它不起作用,第一个标签只是打开。我已经测试过,它在FF中工作。你用的是什么浏览器?您使用的是什么版本的jQuery UI?清除缓存并刷新页面。
function openParentTab() {
locationHash = location.hash.substring( 1 );
console.log(locationHash);
// Check if we have an location Hash
if (locationHash) {
// Check if the location hash exsist.
var hash = jQuery('#'+locationHash);
if (hash.length) {
// Check of the location Hash is inside a tab.
if (hash.closest(".tabContent").length) {
// Grab the index number of the parent tab so we can activate it
var tabNumber = hash.closest(".tabContent").index();
jQuery(".tabs.fix").tabs({ active: tabNumber });
}
}
}
}
hash.get(0).scrollIntoView();
setTimeout(function() {
hash.get(0).scrollIntoView();
}, 1000);