如何显示带有锚点链接的隐藏元素?

时间:2012-11-05 03:26:41

标签: jquery

我有以下代码的标签菜单:

$('#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) - 它不起作用。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

检查这个....

Working Example

添加到您的Jquery

$(document).ready(function(){
var x = $(location).attr('href').replace( 'http://yourdomain.com/yourpage.html' , "");
$('a[href="' + x + '"]').click();
});

答案 1 :(得分: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);
});