0

我有一个 asp.net mvc 部分,其中包含一个 jquery ui 选项卡控件,标记如下:

<div id="admin_tabs" class="tabs_admin">
    <div id="admin_header">
        <ul> 
            <span class="admin_title">Administration</span>
            <li style="float:right; display:inline"><a href="#maint_tab">Maintenance</a></li>
            <li style="float:right; display:inline"><a href="#log_tab">Logs</a></li>
            <li style="float:right; display:inline"><a href="#groups_tab">Groups</a></li>
            <li style="float:right; display:inline"><a href="#users_tab">Users</a></li>
            <li style="float:right; display:inline"><a href="#app_settings_tab">Application Settings</a></li>
        </ul>
    </div>
    <div id="app_settings_tab" class="tab_admin">
    </div>
    <div id="users_tab" class="tab_admin">
    </div>
    <div id="groups_tab" class="tab_admin">
    </div>
    <div id="log_tab" class="tab_admin">
    </div>
    <div id="maint_tab" class="tab_admin">
    </div>
</div>

<script type="text/javascript">
    $("#admin_tabs").tabs({ selected: 4 });
</script>

这工作正常。但我希望应用程序记住页面刷新时上次打开的选项卡,所以我将我的 JavaScript 更改为

$("#admin_tabs").tabs({selected: 4, cookie: {}});

这会立即导致 javascript 错误并且选项卡停止工作。根据 chrome 控制台,错误Uncaught TypeError: Cannot call method 'apply' of undefined发生在 jquery-ui.js 的第 7520 行。在包含 jquery ui 之前,我已经包含了 cookie 插件,但没有效果。正在破坏的代码是

_cookie: function() {
    var cookie = this.cookie ||
        ( this.cookie = this.options.cookie.name || "ui-tabs-" + getNextListId() );
    return $.cookie.apply( null, [ cookie ].concat( $.makeArray( arguments ) ) );

它似乎坏了,因为我第一次加载页面时没有设置 cookie。关于为什么会这样的任何线索,或任何其他解决问题的方法?

4

1 回答 1

0

我发现出了什么问题。出于某种原因,cookie 插件没有被正确包含。我把它放在一个外部脚本中,但是将它移到文档的正文中解决了这个问题。

于 2012-06-26T16:39:29.903 回答