0

我有这个代码的标签菜单:

$('#menu').each(function(){
    // For each set of tabs, we want to keep track of
    // which tab is active and it's associated content
    var $active, $content, $links = $(this).find('a');

    // Use the first link as the initial active tab
    $active = $links.first().addClass('active');
    $content = $($active.attr('href'));

    // Hide the remaining content
    $links.not(':first').each(function () {
        $($(this).attr('href')).hide();
        $("#tab1").show();
    });

    // Bind the click event handler
    $(this).on('click', 'a', function(e){
        // Make the old tab inactive.
        $active.removeClass('active');
        $content.hide();

        // Update the variables with the new link and content
        $active = $(this);
        $content = $($(this).attr('href'));

        // Make the tab active.
        $active.addClass('active');
        $content.show();

        // Prevent the anchor's default click action
        e.preventDefault();

    });
});

问题是关于一个选项卡的直接链接(例如,site.com/#tab2)——它不起作用。有没有办法解决这个问题?

4

2 回答 2

1

检查这个....

工作示例

添加到您的 Jquery

$(document).ready(function(){
var x = $(location).attr('href').replace( 'http://yourdomain.com/yourpage.html' , "");
$('a[href="' + x + '"]').click();
});
于 2012-11-05T04:06:47.233 回答
0

给每个标签一个独特的id属性。例如:

<div id="menu">
   <div id="tab1">...</div>
   <div id="tab2">...</div>
   ...
</div>

给定选项卡的 id,创建一个用于显示选项卡的通用函数:

function showTab(tabId) {

    // find the requested tab using the given id
    var tab = $(tabId);

    // Make the old tab inactive.
    $active.removeClass('active');
    $content.hide();

    // Update the variables with the new link and content

    $active = tab;
    $content = $(tab.attr('href'));

    // Make the tab active.
    $active.addClass('active');
    $content.show();

    // Prevent the anchor's default click action
    e.preventDefault();
}

每当哈希更改时,使用该hashchange事件显示正确的选项卡:

$(window).on('hashchange', function() { 
    showTab(location.href);
});

重写您的点击处理程序以使用 showTab 方法:

$(this).on('click', 'a', function(e){
    showTab($(this).attr('id'));
});

最初加载页面时,选择正确的选项卡:

$(document).ready(function() {
    showTab(location.href);
});
于 2012-11-05T03:48:45.653 回答