2010-02-01 3 views
2

Chargement/Sélection d'un (non-ajax) onglet à partir de l'un des autres onglets peut être fait en utilisantOnglets de l'interface utilisateur jQuery. Recharger onglet actif dans l'onglet non-ajax

$('#mytabscontainer').tabs('select', 3) 

Cependant, je dois être en mesure de recharger le actif tabulation, et la méthode ci-dessus ne fonctionne pas pour cela. Aucun

$('#mytabcontainer').tabs('load', 3) 

Aucune idée sur la façon de réaliser cela?


** Solution **

Dans le plug-in 'onglets du jQuery, remplacer la ligne contenant:

if (($li.hasClass('ui-tabs-selected') && !o.collapsible) || 

avec

if (

Et ajouter un css à la page/ou éditer les fichiers css jQuery, de sorte que vous obtenez:

div.ui-tabs ul li.ui-tabs-selected a {cursor: pointer !important;} 

Cela va changer les onglets de sorte qu'ils sont toujours selecteable, même si elles ont déjà été cliqué sur.

+0

Pourquoi auriez-vous besoin de recharger le contenu d'un onglet non-ajax ? La méthode de chargement s'applique uniquement aux onglets ajax FYI. – karim79

+0

Eh bien, dans l'un des onglets, il y a une liste d'éléments. Il y a aussi un lien pour ajouter un article à la liste. Je veux rafraîchir la liste après avoir ajouté le nouveau lien. Semble plus facile que l'ajout dynamique du nouvel élément à la liste. – klokop

Répondre

2

Si vous avez ce code html pour vos onglets:

<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1">Nunc tincidunt</a></li> 
     <li><a href="ajax/content1.html">Ajax Tab 1</a></li> 
     <li><a href="ajax/content2.html">Ajax Tab 2</a></li> 
    </ul> 
    <div id="tabs-1"> 
     <p>Proin elit arcu</p> 
    </div> 
</div> 

Avec onglet 1 étant l'onglet non-ajax. Cet onglet n'a pas d'URL à partir de laquelle il peut être actualisé. Donc, vous devez d'abord donner une URL avant de pouvoir le recharger:

var tabs = $('#tabs').tabs(); 
tabs.tabs('url', 0,'ajax/content0.html'); 
tabs.tabs('load', 0); 

Rappelez-vous que les onglets sont zéro indexées.

+0

Que faire si je ne veux pas que l'onglet d'origine soit chargé à distance? Voir aussi mon commentaire ci-dessous le premier commentaire sur mon message. – klokop

+0

On dirait que vous avez juste besoin de faire en sorte que le script qui ajoute le nouvel élément renvoie la liste afin que vous puissiez actualiser le html avec lui. – PetersenDidIt

+0

Ce qui revient à rafraichir l'onglet. Mais je suppose que ce n'est pas possible. – klokop

2

si votre code HTML de l'onglet est comme ça ....

<div id="tabs"> 
    <ul> 
     <li><a href="#tabs-1">NON AJAX TAB</a></li> 
    </ul> 
    <div id="tabs-1"> 
     NON AJAX CONTENT 
    </div> 
</div> 

et si la page que cela se produit est, par exemple, "page.html"

$("#tabs-1").load("page.html #tabs-1"); 

devrait faire l'affaire

+0

Notez également: Si [.load()] (http://api.jquery.com/load/) est appelé avec une expression de sélecteur ajoutée à l'URL, comme le Dans ce cas, les scripts sont supprimés avant la mise à jour du DOM et ne sont donc pas exécutés. – baberlicious

0

Vous pouvez simplement supprimer le contenu de l'onglet sur lequel vous avez cliqué et le recharger avec le même contenu (ou tout ce que vous voulez). Par exemple:

$("#tabs").tabs({                 
    activate:function(event,ui){ 
    //Remove the content of the current tab 
    ui.newPanel.empty(); 
    //load the file you want into current panel 
    ui.newPanel.load('content'+(ui.newTab.index()+1)+'.php');             
    }                   
}); 

Dans ce cas, par exemple, si le deuxième onglet est cliqué, le panneau est vidé et rechargé avec content2.php

Questions connexes