我有一个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。关于为什么会这样或任何其他方法来解决问题的任何线索?
答案 0 :(得分:0)
我弄清楚出了什么问题。出于某种原因,cookie插件没有被正确包含。我在外部脚本中使用它,但将其移动到文档正文中可以解决问题。