Предварительный выбор вкладки с поддержкой ajax на вкладках пользовательского интерфейса jquery - PullRequest
7 голосов
/ 31 января 2012

У меня точно такая же проблема, как описано здесь: http://bugs.jqueryui.com/ticket/7930. Проблема в том, что сопровождающий не может воспроизвести его, поэтому заявка закрыта.Мой код выглядит следующим образом:

<script type="text/javascript">
    $(document).ready(function () {
        // assigns the value of a GET parameter called tab to tabIndex
        var tabIndex = getUrlVars()['tab'];

        if (isNaN(tabIndex)) {
            tabIndex = 0;
        }

        // initializes tabs and selects the one provided in tabIndex (default: 0)
        $('div#tabs').tabs({ ajaxOptions: { cache: false}, selected: tabIndex });
    });
</script>
<div id="tabs">
    <ul>
        <li>@Html.ActionLink("User roles", "Roles", "Admin", New With {.rand = DateTime.Now.Ticks}, Nothing)</li>
        <li>@Html.ActionLink("Report templates", "Reports", "Admin", New With {.rand = DateTime.Now.Ticks}, Nothing)</li>
        <li>@Html.ActionLink("Blabla", "2", "Admin")</li>
        <li>@Html.ActionLink("Blabla2", "3", "Admin")</li>
    </ul>
</div>

Это создает вкладки с идентификаторами: # ui-tabs-1, # ui-tabs-2, # ui-tabs-3, # ui-tabs-4.Я захожу на страницу через URL: http://server/Admin?tab=1. Выбрана соответствующая вкладка (вторая с отчетами), но вызов ajax сделан по ссылке на предыдущей вкладке (роли пользователя).В результате отображается содержимое пустой вкладки.Вы знаете, как это исправить?

1 Ответ

5 голосов
/ 03 февраля 2012

Я использовал:

$('#tabs').tabs({ selected: tabIndex });

Но tabIndex был строкой (я получаю ее из url или url-хеша), поэтому он привел, например:

$('#tabs').tabs({ selected: "2" });

В этом случае вы можете наблюдать такое неожиданное поведение.
Функция номера вызывающего абонента на tabIndex

tabIndex = Number(tabIndex)

решает проблему.

...