2012-01-13 60 views
0

首先,在所有應有的尊重下,不要問我爲什麼必須這樣做。這個請求是有人的請求,他有他自己的理由。 :d在JQuery中重新加載標籤的全部內容

所以纔給點...

讓我們只說 「p1.php」 包含此代碼:在「p2.php

<ul> 
    <li><a href="#tab1">Tab 1</a></li> 
    <li><a href="#tab2">Tab 2</a></li> 
</ul> 
<div id="tab1"> 
    <?= $_GET['somechange1'] ?> 
    <a onclick="actionRunOnTab1()">some change 1</a> 
</div> 
<div id="tab2"> 
    <?= $_GET['somechange2'] ?> 
</div> 

然後我包括 「p1.php」 「,並補充一些JavaScript就像這樣:

<script type="text/javascript" src="jquery-1.6.2.min.js"></script> 
<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script> 
<link rel="stylesheet" href="redmond/jquery-ui-1.8.16.custom.css" type="text/css" /> 

<div id="tab"> 
    <? include 'p1.php'; ?> 
</div> 

<script language="javascript"> 
     $(function() { 
     $('#tab').tabs(); 
     }); 

     // Some function 
     function actionRunOnTab1() { 
     $.get(
      "p1.php", 
      { somechange1 : 'Something to send out 1' }, 
      function(data){ 
       $('#tab').html(data); 
       $('#tab').tabs(); 
      } 
     );  
    } 
</script> 

我調試使用在Firefox螢火結果。在第一次使用$('#tab').tabs();創建標籤時,它爲所有需要的元素添加了一些css類來創建標籤,但是在第二次使用$('#tab').tabs();時,功能actionRunOnTab1沒有任何效果。

如何刷新所有標籤頁?如果我重新加載一個1的選項卡,肯定需要更多額外的$ .get(),這意味着需要多次連接到服務器。

回答

1

要以編程方式重新加載Ajax選項卡,請調用loadevent並提供有問題的選項卡索引。

$('#mytabs').tabs("load" , index); 
+0

如果我沒有弄錯,加載事件只加載1個選項卡取決於索引,對不對?我想重新加載所有標籤。因爲選項卡2實際上必須根據選項卡1更改其內容。所以我認爲最好的方法是一次重新制作整個選項卡(替換#tab的內容),而不是通過加載事件(每個選項卡)。或者有什麼想法如何解決我的問題? – xekaiforce 2012-01-13 04:01:43