jQuery UI选项卡 - 初始化隐藏,在设置活动选项卡后显示

时间:2014-12-17 12:26:39

标签: jquery jquery-ui jquery-plugins jquery-ui-tabs

我在jQuery UI标签中有5个面板。默认情况下会显示第一个选项卡,但是有一个特殊情况我想要激活第三个选项卡,但在这种情况下,第三个面板的字段填充数据会有延迟。

我的方法是在确定活动选项卡并完成填充第3个选项卡(如果需要)时,将tabs div包装器初始设置为display: none;。这可能需要一两秒钟,我想阻止用户看到从第一个选项卡到第三个选项卡的活动选项卡切换。

HTML:

<div id="tabs" style="display: none;">
    <ul>
        <li><a href="#tabs-1">Tab #1</a></li>
        <li><a href="#tabs-2">Tab #2</a></li>
        <li><a href="#tabs-3">Tab #3</a></li>
        <li><a href="#tabs-4">Tab #4</a></li>
        <li><a href="#tabs-5">Tab #5</a></li>
    </ul>

    <div id="tabs-1"> ... </div>
    <div id="tabs-2"> ... </div>
    <div id="tabs-3"> ... </div>
    <div id="tabs-4"> ... </div>
    <div id="tabs-5"> ... </div>
</div>

jQuery:

_activateTab = 0;

jQuery(document).ready(function () {

    // Initialize tabs as hidden initially
    $("#tabs").tabs({ hide: { duration: 0 } });

    // Disable last 3 tabs by default
    $("#tabs").tabs("option", "disabled", [2, 3, 4]);

    // Under certain circumstances, prepare to show tabs with 3rd tab active
    if (somecondition == true) {
        _activateTab = 2;

        // Enable 3rd tab so it can be activated
        $("#tabs").tabs("enable", _activateTab);
    }

    // Activate appropriate tab
    $("#tabs").tabs("option", "active", _activateTab);

    // Display tabs
    $("#tabs").tabs({ show: { duration: 500 } }).show();
})

无论我尝试什么,似乎#tabs显示第一个标签为活动,然后切换到第三个标签。这是一种不受欢迎的视觉效果。我希望标签显示时第3个标签处于活动状态,而不必看到从标签#1到标签#3的切换。

1 个答案:

答案 0 :(得分:1)

您可以使用内置的active选项。在初始化选项卡之前,检查确定哪个选项卡应处于活动状态的条件,并相应地设置active

$(function() {
   var active = 0;
   if (true) // check the condition
     active = 2; // tab index is zero based. use -1 for last tab
   $("#tabs").tabs({
     active: active
   });
 });
<link href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>


<div id="tabs">
  <ul>
    <li><a href="#tabs-1">Nunc tincidunt</a>
    </li>
    <li><a href="#tabs-2">Proin dolor</a>
    </li>
    <li><a href="#tabs-3">Aenean lacinia</a>
    </li>
  </ul>
  <div id="tabs-1">
    <p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper
      leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum.
      Nunc tristique tempus lectus.</p>
  </div>
  <div id="tabs-2">
    <p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean
      aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat.
      Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>
  </div>
  <div id="tabs-3">
    <p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia
      nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>
    <p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna
      ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum.
      Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>
  </div>
</div>