Comment puis-je ouvrir un onglet avec jQuery UI Tabs à partir d'un lien en dehors de la div?
Cela peut être un peu difficile à expliquer, mais je vais essayer de mon mieux. J'ai une page produit avec deux onglets, description complète et la vidéo. Elles sont effectuées à l'aide de jQuery UI Tabs.
Au-dessus de cette section de la page j'ai une image de produit avec des miniatures...mais j'en veux un de la les miniatures pour avoir un lien pour voir la vidéo (qui est bien sûr contenues dans l'onglet vidéo).
Si je charge la page site.com/product#video il ne chargez l'onglet approprié...mais lorsque l'onglet est pas active, et j'utilise un lien en dehors de la #onglet div, (ex: Vidéo), il ne fait rien.
Comment puis-je avoir un lien pour ouvrir l'onglet si elle n'est pas contenue dans le #onglet div?
CODE
Ce code est à l'extérieur des onglets, et doit ouvrir la #onglet vidéo
<a href="#video">Open Video Tab</a>
Onglets Code
<div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
<ul class="product-tabs ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover"><a href="#description">Full Description</a></li>
<li class="ui-state-default ui-corner-top"><a href="#video">Video</a></li>
</ul>
<div class="product-collateral">
<div class="box-collateral box-description">
<div id="description" class="ui-tabs-panel ui-widget-content ui-corner-bottom">
Content
</div>
<div id="video" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide">
<h2 class="video">Video Content</h2>
</div>
</div>
</div>
</div>
Ajout d'un exemple de code à la question.
Vous allez avoir à nous donner plus d'infos. Pour l'instant il semble que vous aurez besoin pour résoudre avec un peu de jquery. une solution rapide pourrait faire qu'href absolue = hfef="site.com/product#video" si ce travail est de cette façon. Sinon, vous allez avoir besoin de jquery pour chercher un hashchange. Envoyer certains de liens captures d'écran ou d'un jfiddle?
Chers Plz aussi le voir, si vous pouviez résoudre. stackoverflow.com/questions/20090656/...
OriginalL'auteur callmedpit | 2013-01-17
Vous devez vous connecter pour publier un commentaire.
Ce qui a fonctionné pour moi:
Html
Javascript
Donc ce que cela ne fait de fournir un lien vers la description et la vidéo onglets, qui sont sélectionnés lorsque le lien est cliqué.
De ici nous pouvons voir que lors de la sélection d'un onglet en particulier, on peut utiliser un index de base zéro ou le href fragment, ce qui souligne l'onglet nous souhaitons afficher.
C'est pourquoi le
href
attributs de laa
éléments correspondre à l'Id de ladiv
éléments - lorsqu'un clic est effectué sur ses href fragment est ensuite utilisée pour définir l'onglet sélectionné.Mise à jour de jQuery UI 1.11
Que jQuery UI a évolué, a l'API pour le réglage de l'onglet actif. Comme de jQuery UI 1.11, le code suivant sélectionner l'onglet actif:
Maintenant parce que nous avons maintenant de fournir un index basé sur zéro, le code que j'ai fourni ne fonctionne plus.
Ce dont nous avons besoin maintenant est un indice qui peut effectivement être utilisé. Une approche est la suivante:
Une autre est d'utiliser HTML5
data-
attributs:De sorte que vous pouvez le faire lors de la manipulation de cliquer sur ces liens:
Essayez d'ajouter la classe
open-tab
pour le lien que vous cliquez. Ma réponse suppose que les liens qui sont utilisées pour ouvrir les onglets ont la classe. Aussi, ce bloc de code:jQuery(document).ready(function () { jQuery('.yotpo .result_status').click(function(){ jQuery('#tabs').tabs('select', "reviews"); }); });
vous devriez être en mesure de supprimer en conséquence. Si vous voulais vous pouvez également essayer de changerreviews
à#reviews
pour voir si cela fonctionne, mais je pense que l'ajout de cette classe est l'approche plus générale.Merci pour la réponse rapide, malheureusement, je n'ai pas la possibilité d'ajouter une classe (le code est tiré à partir d'un plugin), c'est pourquoi je suis en utilisant le .yotpo .result_status. J'ai essayé de faire #des examens et n'a pas de chance. En théorie, il semble comme il devrait fonctionner, mais pour quelque raison il ne l'est pas. D'autres idées?
#reviews
ne fonctionne pas? Qui semble étrange. Je pense qu'à ce point nous devons être certains que lejQuery('.yotpo .result_status').click
gestionnaire est effectivement en cours d'exécution. Vous pouvez également essayer d'utiliser l'indice de base de l'approche, c'est à dire,jQuery('#tabs').tabs('select', 2);
Si le lien se charge après le chargement de la page? Que devrait être le problème, parce que le gestionnaire de clic de ne pas être attaché à quoi que ce soit. Essayez ceci:
jQuery(document).on('click', '.yotpo .result_status', function() { jQuery('#tabs').tabs('select', "#reviews"); });
OriginalL'auteur
utiliser jQuery:
Rappelez-vous, que l'indexation commence à partir de 0
OriginalL'auteur
À l'aide de jquery, se lier à un événement de clic sur votre lien qui ouvre l'onglet que vous voulez.
OriginalL'auteur
J'utilise un mini plug-in.
Ouvre l'onglet aide href ou n'importe quel élément.
id de groupe doit contenir le numéro du panneau. Exemple (1-onglets, les onglets-2, ...)
Plugin soustrait 1 et ouvrez le panneau. Les onglets (à l'actif (le nombre de id -1))
Utilisation
panneau:"#onglets" //récipient de panneau
: "data-href" //nom de l'attribut avec la valeur
OriginalL'auteur
OriginalL'auteur
Si vous utilisez twitter bootstrap au lieu de jquery ui, il sera très simple.
Juste ajouter
data-toggle="tab"
et mettre le lien où vous voulez dans la page:OriginalL'auteur