标签控件cookie无效

时间:2012-06-25 17:50:07

标签: jquery asp.net-mvc jquery-ui cookies tabs

我有一个asp.net mvc partial,它包含一个jquery ui tab控件,标记如下:

<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控制台,jquery-ui.js的第7520行出现错误Uncaught TypeError: Cannot call method 'apply' of undefined。我在包含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。关于为什么会这样或任何其他方法来解决问题的任何线索?

1 个答案:

答案 0 :(得分:0)

我弄清楚出了什么问题。出于某种原因,cookie插件没有被正确包含。我在外部脚本中使用它,但将其移动到文档正文中可以解决问题。