次のようにマークアップされたjquery uiタブコントロールを含むasp.net mvcパーシャルがあります。
<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 が設定されていないため、壊れているように見えます。それがなぜなのか、または問題を解決する他の方法についての手がかりはありますか?