jQuery选项卡tabs() - 显示隐藏单独的div,具体取决于tab1& TAB2

时间:2012-12-21 19:26:45

标签: jquery jquery-ui-tabs

我想在选择tab1时显示特定的div。与tab2相同。单击选项卡时,请给我一个显示/隐藏这些div的解决方案。我无法在活动状态下识别这些选项卡的特定类或ID。单击tab1时我的要求是什么我需要显示tab1content1 divs

以下是链接

http://jsfiddle.net/ucaxt/

1 个答案:

答案 0 :(得分:1)

一种不需要将外部内容移动到标签中的方法是:

var contents = $('div[id^="content"]').hide();
$("#tabs").tabs({
    activate: function(evt, ui) {
        var num = ui.newPanel.attr('id').replace(/\D+/g, '');
        contents.hide();
        $('#content' + num).show();
    }
});​

JS Fiddle demo

此方法确实要求您在所有要显示的内容id元素的div附加一个数字,为了识别点击的标签,显示的面板和标签的外部之间的关系;所以你的HTML变成了:

<div id="tabs">
    <ul>
        <li><a href="#tab1">Tab1</a></li>
        <li><a href="#tab2">Tab2</a></li>
    </ul>
    <div id="tab1">
        test1
    </div>
    <div id="tab2">
        test2
    </div>
</div>
<br/>
<div id="content1">
    <p>
        on click of first tab (tab1) I need to show this id as well
    </p>
</div>
<br/>
<div id="content2"> <!-- added the '2' to the id here -->
    <p>
        on click of Second tab (tab2) I need to show this id as well
    </p>
</div>

如果您将内容div元素包装在外部容器中,则在我的演示中它获得了id containers,然后您可以定位div来显示/隐藏的方式略有不同:

$("#tabs").tabs({
    activate: function(evt, ui) {
        var num = ui.newPanel.attr('id').replace(/\D+/g, '');
        $('#contents > div').eq(num - 1).show().siblings().hide();
    }
});

使用HTML:

<div id="tabs">
    <ul>
        <li><a href="#tab1">Tab1</a></li>
        <li><a href="#tab2">Tab2</a></li>
    </ul>
    <div id="tab1">
        test1
    </div>
    <div id="tab2">
        test2
    </div>
</div>
<br/>
<div id="contents">
    <div id="content1">
        <p>
            on click of first tab (tab1) I need to show this id as well
        </p>
    </div>
    <br/>
    <div id="content2">
        <p>
            on click of Second tab (tab2) I need to show this id as well
        </p>
    </div>
</div>

JS Fiddle demo

我修改了上面的代码,以回应OP留下的评论(下面):

  

[On]加载页面我需要显示内容div1以及tab1内容​​。

function showContent(evt, ui) {
    if (!evt || !ui) {
        return false;
    }
    else {
        // ui.newPanel in the activate event,
        // ui.panel in the create event
        var panel = ui.newPanel || ui.panel,
            num = panel.attr('id').replace(/\D+/g, '');
        $('#contents > div').eq(num - 1).show().siblings().hide();
    }
}
$(function() {
    $("#tabs").tabs({
        // runs the function when the tabs are created:
        create: function(evt, ui) {
            showContent(evt, ui);
        },
        // runs the function when the tabs are activated:
        activate: function(evt, ui) {
            showContent(evt, ui);
        }
    });
});​

JS Fiddle demo