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

时间:2011-06-03 14:21:56

标签: javascript jquery jquery-ui jquery-ui-tabs

嘿大家好我看到另一篇关于使用特定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 个答案:

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

请注意从selectshow的更改

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

答案 1 :(得分:4)

这适用于jQuery-ui-1.10.0(对我而言)。请注意,我使用的是div,而不是问题中的字段集。

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

答案 2 :(得分:0)

在版本jQuery UI 1.12中,事件更改为&#39; beforeActivate&#39;和&#39; ui&#39;并返回参数newTab

所以新功能看起来像:

&#13;
&#13;
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');
        } 
    }
});
&#13;
&#13;
&#13;

答案 3 :(得分:0)

在JQuery UI标签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();
            }
        }
    }
)
相关问题