2

我试图弄清楚如何让 jquery-tabs 记住当表单被提交并重定向到 get 时哪个选项卡处于打开状态。我找到了很多例子,但他们都说要ui.indexselect事件中使用,文档中都没有;我已经确认这ui.index不是该对象的一部分。$("#MyTabs").tabs("option", "selected")在事件中使用activate可以让我获得先前选择的选项卡的索引,而不是用户刚刚选择的选项卡。如,如果选择了选项卡 0 并单击选项卡 3,我得到 0,而不是 3。active如果我不知道索引,则无法使用该选项。

我应该只计算 jquery 变成选项卡的无序列表中的列表项,然后使用它们从 div ID 映射ui.newPanel,还是有更优雅的方法来做到这一点?一旦我得到了正确的索引,我可能会将它添加到查询字符串中。如果用户打开了多个窗口或浏览器选项卡,cookie 解决方案并不适合我。

编辑:问题是该active选项需要一个索引,但事件的ui参数activate似乎只给了我选项卡和选项卡内容的lianddiv元素。由于曾经有一处ui.index房产,我想知道我是否遗漏了什么。

编辑:感谢 Kush,这是我使用的解决方案;为简洁起见,我省略了一些代码。

function Document_OnReady() {
    $("#MyTabs").tabs({
        active: $("input.InitialTabIndex").val()
    });

function SetInitialTab() {
    $("input.InitialTabIndex").val($("#MyTabs").tabs("option", "selected"));
}

function Form_OnSubmit() {
    SetInitialTab();
}

当服务器处理 POST 时,我读取表单值,然后在重定向到 get 时将其添加到查询字符串中。

谢谢!

4

4 回答 4

1

一般情况下,服务器端代码会为所选元素添加一个类名,并将页面输出到浏览器。

于 2012-12-18T21:41:59.827 回答
1

创建一个隐藏字段。单击任何选项卡时,将选项卡索引保留在该隐藏字段上,这样下次重定向页面不会有问题。您可以使用隐藏字段表单元素来重定向页面。

$('#hidden_field').val($tabs.tabs('option', 'selected'));
于 2012-12-19T13:38:43.957 回答
1

试试这个:

<div id="selector" class="ui-mainColTabs">
    <ul>
        <li><a href="#tabs-1">Tab 1</a></li>
        <li><a href="#tabs-2">Tab 2</a></li>
    </ul>
    <div id="tabs-1"></div>
    <div id="tabs-2"></div>
</div>

<form id="form">
    <input type="submit" value="Kill" />
</form>

<a href="#" id="getCookie">Get</a>

<script type="text/javascript">
<!--
$(document).ready(function() {
    $("#selector").tabs({
        cookie: {
            name: 'tab_cookie',
            expires: 7
        }
    });


    $('#getCookie').click(function() {
        alert($.cookie('tab_cookie'));
    });

    $('#form').submit(function() {
        alert($.cookie('tab_cookie'));
    });
});
//-->
</script>

您需要从这里添加 jQuery cookie 文件

于 2012-12-19T13:38:46.680 回答
0

记住数据适用于

jQuery.data('key', data);
于 2012-12-19T13:35:58.700 回答