2012-06-25 26 views
0

我有一個asp.net mvc的部分包含一個jQuery UI的標籤控制,標記像這樣:標籤控件的cookie不工作

<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。任何線索,爲什麼這可能,或任何其他方式來解決這個問題?

回答

0

我想通了什麼是錯的。出於某種原因,cookie插件未被正確包含。我在外部腳本中使用它,但將它移動到文檔正文中可以解決問題。