2011-04-14 196 views
1

請參閱下面的代碼。在ASP.NET MVC應用程序中使用的代碼。當我到達頁面時,沒有問題,我看到第一個標籤內容。我點擊第二個標籤,我看到了第二個標籤的內容。我回到第一個標籤仍然沒有問題,但是當我嘗試再次進入第二個標籤時,我停留在第一個標籤上。jQuery UI選項卡,活動選項卡不會更改

$ .post工作並返回正確的值,但第一個選項卡保持活動狀態。

你能幫我嗎?

感謝,

<script type="text/javascript"> 
    $(document).ready(function() { 
     var $tabs = $("#tabs").tabs({ 
      select: function (e, ui) { 
       var thistab = ui; 
       runMethod(thistab.index); 
      } 
     }); 
    }); 

    function runMethod(thistab) { 
     selectedtab = thistab; 
     switch (thistab) { 
      case 0: 
       $.post("/MyController/Action1", { var1: 1, var2: 0 }, 
         function (data) { 
          $("#tabs-1").replaceWith(data); 
         } 
       ); 
       break; 
      case 1: 
       $.post("/MyController/Action2", { var1: 2, var2: 1 }, 
         function (data) { 
          $("#tabs-2").replaceWith(data); 
         } 
       ); 
       break; 
      case 2: 
       alert(2); 
       break; 
     } 
    } 
</script> 

<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1">Tab1</a></li> 
     <li><a href="#tabs-2">Tab2</a></li> 
     <li><a href="#tabs-3">Tab3</a></li> 
    </ul> 
    <div id="tabs-1">Tab1</div> 
    <div id="tabs-2">Tab2</div> 
    <div id="tabs-3">Tab3</div> 
</div> 

回答

2

您是否嘗試過簡單地使用jQuery UI選項卡的內置的AJAX功能?

http://jqueryui.com/demos/tabs/#ajax

<div id="tabs"> 
    <ul> 
     <li><a href="/MyController/Action1/?var1=1&var2=0">Tab 1</a></li> 
     <li><a href="/MyController/Action2/?var1=2&var2=1">Tab 2</a></li> 
    </ul> 
</div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#tabs").tabs({ ajaxOptions: { type: "POST" }, cache: false }); //incorporated tobias86's suggestion of setting the cache option 
    }); 
</script> 
+1

我同意,這是比試圖加載標籤內容自己要簡單得多。如果擔心的是您希望每次單擊某個選項卡時都要重新加載標籤內容,則在初始化標籤時只需使用'cache:false'選項。 – tobias86 2011-04-15 06:36:55

+0

我將您的建議添加到代碼示例中,tobias86 – 2011-04-15 06:44:04

+0

感謝您的信息。兩個備註/信息:1.當我更改標籤時,其他標籤的內容必須清理; 2.視圖返回有一些文本框,下拉,datepicker(jQuery UI),他們必須工作(必須鉤到jQuery)。 – 2011-04-15 06:57:16

相關問題