2013-05-07 3 views
1

J'utilise actuellement des onglets Jquery avec ajax pour charger du contenu externe. (http://jqueryui.com/tabs/#ajax)Onglets jquery avec ajax, comment changer l'url

j'ai aussi le code ci-dessous pour afficher l'onglet dans lequel est montré dans l'URL:

$(window).load(function() { 
    $(function() { 
     $("#tabs").tabs({ 
      show: function (event, ui) { 
       window.location.hash = ui.panel.id; 
      } 
     }); 

    }); 
}); 

Je voulais savoir si vous êtes en mesure de changer la façon dont le lien est affiché? Maintenant, par défaut affiche "page.htm l # undefined", onglet 1 montre "page.htm l # ui-tabs-1", onglet 2 montre "page.htm l # ui-tabs-2", etc ...

Existe-t-il un moyen de le personnaliser? et avez l'affichage par défaut automatiquement l'onglet 1 dans l'URL?

Par exemple « page.html # compte »

Je ne peux pas sembler trouver les ressources appropriées ou que je cherche au mauvais endroit ...

Répondre

0

il suffit de changer votre code HTML:

<ul> 
    <li><a href="accounts.html" data-hash="account">Nunc tincidunt</a></li> 
    <li><a href="other.html" data-hash="other">Proin dolor</a></li> 
</ul> 

et votre javascript:

activate: function(event,ui){ 
    window.location.hash = $(event.currentTarget).data('hash'); 
} 

Pour une raison quelconque, je ne sais pas, les données détecte pas ed, essayez:

window.location.hash = $(event.currentTarget).attr('data-hash'); 

Vous pouvez également utiliser load, reçoit une fonction exécutée après un onglet à distance est chargé. activate reçoit une fonction exécutée après la fin d'une animation de transition de tabulation.

+0

Je ne peux pas faire ton parce que le contenu viendra de pages externes, n'y a-t-il aucun moyen de contourner le problème? – user1555843

+0

print 'console.log (ui.panel.id)' dans le navigateur, si c'est la valeur apparaissant dans le hachage, vous pouvez juste faire 'location.hash = event.currentTarget.href' – juanpastas

+0

J'ai effectivement essayé votre suggestion initiale et bien # Undefined n'apparaît plus, mais lorsque je clique sur les autres onglets, on voit toujours "# ui-tabs-2", "# ui-tabs-3". Ne semble pas lire le hachage de données qui a été donné .. – user1555843

0

Après beaucoup de creuser, tourne son déjà pris en charge: http://docs.jquery.com/UI/Tabs#Ajax_mode en ajoutant simplement title = « » à la « une » étiquette ...

+0

Ce lien ne va plus dans une section "Ajax_mode" . Savez-vous si cela fonctionne encore dans la dernière version de jQuery UI? Je n'arrive pas à le faire marcher. J'utilise ceci pour ajouter le hachage: beforeActivate: function (event, ui) { location.hash = ui.newPanel.selector; }, – Billkamm

+0

Découvrez comment. J'utilise simplement l'attribut aria-controls de l'élément li pour personnaliser le nom d'un onglet chargé via ajax – Billkamm

Questions connexes