jQuery UI选项卡 - 显示所有选项卡

4

大家好。我看到另一篇关于如何使用特定的jQuery UI选项卡来同时打开所有选项卡内容的帖子。这更或多或少是一个“全部显示”选项卡。但似乎对我无效。无论如何,我的页面结构如下:

<div id="tabs">

   <ul class="tabs-1">
   <li><a href="#tabs-1"> Some Tab </li>
   <li><a href="#tabs-2"> Some Tab </li>
   <li><a href="#tabs-3"> Some Tab </li>
   <li><a href="#"> Show All </li>
   </ul>



<fieldset id="tabs-1"> Content </fieldset>
<fieldset id="tabs-2"> Content </fieldset>
<fieldset id="tabs-3"> Content </fieldset>

</div>

这是我使用的JavaScript代码,基于之前的一个例子:

var user_tabs = $("#tabs").tabs({
    select: function(event, ui) {
        if (ui.index == 3) {
            $("fieldset[id^=tabs-]").show();
        } else {
            $("fieldset[id^=tabs-]").hide();
            $(ui.panel).show()
        }
    }
});

我使用的选项卡已经正确初始化,但是“显示所有选项卡”根本不起作用。有什么想法吗?
4个回答

5

首先,修复标签内的HTML代码。您所有链接都缺少</a>

然后将最后一个选项卡更改为:

<li><a href="#tabs-4"> Show All </a></li>

添加另一个面板(可以为空):

<fieldset id="tabs-4"></fieldset>  

并将您的javascript更改为以下内容:

var user_tabs = $("#tabs").tabs({
    show: function(event, ui) {

        if (ui.index == 3) {

            $("fieldset[id^='tabs-']").removeClass('ui-tabs-hide');
            $("fieldset[id='tabs-4']").addClass('ui-tabs-hide');
        } 
    }
});

(注意从 select 更改为 show)

示例: http://jsfiddle.net/niklasvh/km7Le/


非常好用 - 非常感谢你,Niklas - 我真的很感激! - Jason
1
在jquery ui 1.9中如何使其工作,有任何想法吗?由于ui-tabs-hide已被删除,因此它会出现错误。 - John Jiang

4

在jQuery-ui-1.10.0中,这对我来说是有效的。请注意,我使用div而不是问题中使用的fieldset。

//Do the tabs
$('#tabs').tabs({
    activate: function (event, ui) {
        if (ui.newPanel.selector == "#tabs-4") {
            $("div[id^='tabs-']").attr('style', "display:block;");
            $("div[id^='tabs-']").attr('aria-expanded', true);
            $("div[id^='tabs-']").attr('aria-hidden', false);
        }
        else {
            $("div[id^='tabs-']").attr('style', "display:none;");
            $("div[id^='tabs-']").attr('aria-expanded', false);
            $("div[id^='tabs-']").attr('aria-hidden', true);
            $(ui.newPanel.selector).attr('style', "display:block;");
            $(ui.newPanel.selector).attr('aria-expanded', true);
            $(ui.newPanel.selector).attr('aria-hidden', false);
        }
    }
});

谢谢。我注意到1.9+使用自定义属性来确定选项卡是否显示。 - The Thirsty Ape

0
在jQuery UI 1.12版本中,事件已更改为'beforeActivate'和'ui',并返回参数newTab。
因此,新函数将如下所示:

var user_tabs = $("#tabs").tabs({
    beforeActivate: function(event, ui) {

        if (ui.newTab.find('a').attr('href') === '#tabs-4') {

            $("fieldset[id^='tabs-']").removeClass('ui-tabs-hide');
            $("fieldset[id='tabs-4']").addClass('ui-tabs-hide');
        } 
    }
});


0
在JQuery UI Tabs 1.12.1中,这个功能完美运作:
var user_tabs = $("#tabs").tabs(
    {activate: 
        function(event, ui) {
            if ( ui.newTab.find('a').attr('href') === '#tabs-4') {
                $("div[id^='tabs-']").show();
            }
        }
    }
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接