【问题标题】:Trigger Tab activate function - JQuery UI Tabs触发选项卡激活功能 - JQuery UI 选项卡
【发布时间】:2013-07-31 10:28:03
【问题描述】:

我遇到了问题。

HTML sn-p 是这样的

<div id="mainTab">
    <ul>
        <li><a href='#tabs-1'>TabGroup1</a></li>
        <li><a href='#tabs-2'>TabGroup2</a></li>            
    </ul>
    <div id='tabs-1'>
        <a onclick="showSubTab1Tab2();">showSubTab1Tab2</a>
        <a onclick="showSubTab2Tab2();>showSubTab2Tab2</a>
    </div>
    <div id='tabs-2'>
        <!-- First Sub Tab -->
        <div id="subTab1">
            <ul>
                <li><a href='#tabs-3'>TabGroup3</a></li>
                <li><a href='#tabs-4'>TabGroup4</a></li>            
            </ul>
            <div id='tabs-3'>

            </div>
            <div id='tabs-4'>

            </div>
        </div>
        <!-- Second Sub Tab -->
        <div id="subTab2">
            <ul>
                <li><a href='#tabs-5'>TabGroup5</a></li>
                <li><a href='#tabs-6'>TabGroup6</a></li>            
            </ul>
            <div id='tabs-5'>

            </div>
            <div id='tabs-6'>

            </div>
        </div>
    </div>
</div>

而 javascript 看起来像这样。我正在使用 JQuery UI 1.10.3

$("#mainTab").tabs();

$( "#subTab1" ).tabs({
    activate: function( event, ui ) {
        // Update Some Logs
    }
});

$( "#subTab2" ).tabs({
    activate: function( event, ui ) {
        // Update Some Logs
    }
});

function showSubTab1Tab2() {
    $("#mainTab").tabs( "option", "active", 1);
    $( "#subTab1" ).tabs( "option", "active", 1);
}

function showSubTab2Tab2() {
    $("#mainTab").tabs( "option", "active", 1);
    $( "#subTab2" ).tabs( "option", "active", 1);
}

如果用户点击“showSubTab2Tab2”。我更改了主选项卡。将用户带到第二个选项卡。然后激活 subTab2 的第二个选项卡,如果该选项卡先前未处于活动状态,这将激活第二个选项卡并触发激活事件

现在问题来了。如果用户这样做两次,那么第二次激活事件不会被触发。我需要该事件在前端记录/填充一些代码。

我不能在我的函数中这样做。

【问题讨论】:

  • 好吧,它已经被激活,所以它不会触发事件,因为它不需要。为什么需要它再次开火?
  • @PatrickEvans 看到我的编辑问题。我需要触发事件以记录/填充一些代码,因为我有多个选项卡式应用程序。

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


【解决方案1】:

如果您尝试在 showSubTab1Tab2() 之前检查状态

http://jsfiddle.net/S4nua/1/

【讨论】:

  • 感谢您的回答。但这并不能解决我的问题。我需要触发激活事件。我有一个常用的方法来激活/重新加载标签。而且我不知道哪个选项卡会更改/激活。这就是为什么我需要触发激活事件。
  • 我的方法总是调用事件。有一个函数叫做 log1。如果选项卡已经处于活动状态,则调用此方法。如果没有,则激活选项卡,然后自动触发 active 方法。
【解决方案2】:

试试这个而不是你的“标签”代码。每次显示选项卡时都会触发:

$('a[href="#subTab2"]').on('shown', function () {
        ---- your code here ----
  });

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多