2010-08-16 3 views
20

J'utilise les onglets de l'interface utilisateur de jQuery pour créer une section d'onglet verticale d'une page et je souhaite que le dernier onglet vertical soit lié à une URL plutôt que de charger un onglet.Utilisation des onglets de l'interface utilisateur jQuery. Comment associer un onglet à une URL plutôt que de charger un onglet?

Des suggestions pour la meilleure façon de faire cela? Je peux coller un autre élément en plus d'un LI dans la liste, mais je préférerais que le dernier li se comporte différemment.

Merci pour toute aide.

Voici mon javascript:

// vtabs 
    $("#aboutprod-tabs").tabs(
    { fx: [{opacity:'toggle', duration:'normal'}, 
    {opacity:'toggle', duration:'fast'}] }) 
    .addClass('ui-tabs-vertical'); 

Et HTML

<div id="aboutprod-tabs"> 
    <ul> 
    <li><a href="#tabs-1">First</a></li> 
    <li><a href="#tabs-2">Second</a></li> 
    <li><a href="#tabs-3">3rd</a></li> 
    <li class="last"><a href="/products">Learn more...</a></li> 
    </ul> 
    <div id="tabs-1"> 
    Tab panel 1 
    </div> 
    <div id="tabs-2"> 
    Tab panel 2 
    </div> 
    <div id="tabs-3"> 
    Tab panel 3 
    </div> 
</div> 

Répondre

25

Après votre .tabs() appel, vous pouvez inverser le comportement de clic et href il a changé, en mettant l'href en arrière comme ceci:

$("li.last a").unbind('click').click(function() { 
    this.href = $.data(this, 'href.tabs');​​​​ 
}); 

You can give it a try here.

Mise à jour: En utilisant les nouvelles versions de jQuery:

Il n'y a pas besoin d'ajouter un gestionnaire de clic une fois que vous déliez le gestionnaire de clic jQuery-UI à partir du lien que vous souhaitez modifier. Cela fonctionne:

$("li.last a").unbind('click'); 
+0

Nice. C'est intelligent et fonctionne parfaitement. Merci, Nick! – Michael

+3

Pour que cela fonctionne avec jQuery 1.8.2/jQuery UI 1.9.0, utilisez '$ (" li.last a "). Unbind ('click')'. L'exemple de la réponse fonctionnait bien pour les versions antérieures de jQuery, mais pour une raison quelconque, le gestionnaire de clics ajouté était en train de tout chambouler dans la dernière version. –

+0

Alex a absolument raison, cette réponse devrait être éditée pour inclure cette information. –

0

Vous pouvez modifier la méthode de sélection des onglets:

$(".selector").tabs({ select: function(event, ui) { ... } });

et comparer ui.tab.id (ou ui.panel.id, basé sur le balisage que vous utilisez) à l'id du onglet que vous souhaitez envoyer et utilisez location.href=... pour rediriger l'utilisateur.

+0

où est-ce documenté? http://api.jqueryui.com/tabs/ actuellement ne dit rien à propos de cela pour les onglets ... –

+1

Ceci est quelque chose qui a pu être valide en 2010 quand j'ai écrit ceci, mais je n'ai pas suivi jQuery, donc je ne suis pas sûr. Bonne chance. – partkyle

+0

merci pour l'info, à la fin j'ai fini par faire mes propres "onglets" petit-script, parce que je ne voulais pas non plus le style, donc j'ai résolu 2 problèmes en une ** courte ** soulution - http: // stackoverflow.com/a/39621077/1835470 –

Questions connexes