2012-01-13 94 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