我有一个 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。关于为什么会这样的任何线索,或任何其他解决问题的方法?