【问题标题】:jquery tabs: active tab content not showing onloadjquery选项卡:活动选项卡内容未显示onload
【发布时间】:2013-11-21 23:31:38
【问题描述】:

我正在使用我在某处看到的 jquery 选项卡脚本。问题是加载页面时默认活动选项卡上的内容未显示。当我单击任何其他选项卡时,会显示与活动单击选项卡相关的内容,但不会显示 onload。我什至尝试使用$(window).load(function() 而不是$(document).ready(function(),但没有效果。

这里是jquery代码:

// Wait until the DOM has loaded before querying the document
            $(document).ready(function(){
                $('ul.tabs').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');

                    // If the location.hash matches one of the links, use that as the active tab.
                    // If no match is found, use the first link as the initial active tab.
                    $active = $($links.filter('[href="'+location.hash+'"]')[0] || $links[0]);
                    $active.addClass('active');
                    $content = $($active.attr('href'));

                    // Hide the remaining content
                    $links.not($active).each(function () {
                        $($(this).attr('href')).hide();
                    });

                    // 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();
                    });
                });
            });

这里是小提琴:http://jsfiddle.net/L5UpJ/。请帮忙。

【问题讨论】:

    标签: jquery tabs


    【解决方案1】:

    附加标签事件后,为ul.tabs a.active 元素触发手动点击事件。

    喜欢

    $('ul.tabs').find('a.active').click();
    

    试试

    // Wait until the DOM has loaded before querying the document
    $(document).ready(function(){
        $('ul.tabs').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');
    
            // If the location.hash matches one of the links, use that as the active tab.
            // If no match is found, use the first link as the initial active tab.
            $active = $($links.filter('[href="'+location.hash+'"]')[0] || $links[0]);
            $active.addClass('active');
            $content = $($active.attr('href'));
    
            // Hide the remaining content
            $links.not($active).each(function () {
                $($(this).attr('href')).hide();
            });
    
            // 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();
            });
        }).find('a.active').click();
        //see here the click event is triggered here
    });
    

    演示:Fiddle

    【讨论】:

    • .find('a.active').click(); - 这是你添加的吗?