les onglets jQuery: comment faire pour créer un lien vers un onglet spécifique?
Je suis à l'aide d'un simple script jQuery pour les onglets:
Le JS:
$(document).ready(function() {
$(".tab-content").hide();
$("ul.tabs li:first").addClass("active").show();
$(".tab-content:first").show();
$("ul.tabs li").click(function() {
$("ul.tabs li").removeClass("active");
$(this).addClass("active");
$(".tab-content").hide();
var activeTab = $(this).find("a").attr("href");
$(activeTab).show();
return false;
});
});
Le HTML (pour le index.html):
<div id="tabs">
<ul class="tabs">
<li><a href="#tabs-voters">Top Voters</a></li>
<li><a href="#tabs-commenters">Top Commenters</a></li>
</ul>
<div id="tabs-voters" class="tab-content">
<p id="h1-01">Tab content</p>
<p>Some content</p>
</div>
<div id="tabs-commenters" class="tab-content">
<h2 id="h-02">Tab content</h2>
<p>Some content</p>
<h2 id="h-03">Tab content</h2>
<p>Some content</p>
</div>
</div>
Ce que je dois faire est de créer un lien de travail pour index.html#h-02, index.html#h-03 etc., mais les liens ne fonctionnent pas parce que l'onglet est masqué par défaut. Est-il possible de modifier le JS, je peux le lien vers un signet dans des onglets qui sont cachés lors de l'ouverture de index.html? Quelqu'un peut me pointer dans la bonne direction?
Merci beaucoup! 🙂
Vous devez vous connecter pour publier un commentaire.
Dans votre document prêt gestionnaire, vous pouvez examiner la valeur du fragment et de l'utilisation de JavaScript pour afficher l'onglet correspondant.
Modifier comme demandé:
Edit 2:
Si vous voulez être en mesure de spécifier un ID d'un onglet de l'élément de contenu (comme
h-02
dans la page liée), alors vous avez à travailler vers l'arrière pour obtenir l'ID de l'onglet correspondant pour l'activer. Comme ceci:À l'aide de
$.la plus proche()
signifie que le hachage pouvez spécifier l'ID de la.tab-content
lui-même (commetabs-commenters
dans votre exemple), ou un enfant de celui-ci.J'ai fait quelques autres de nettoyage des suggestions ci-dessus. Pas besoin de continuer à re-sélectionner les éléments du DOM!
$(window.location.hash).click();
- en tout cas, je vais copypasta votre code dans ma réponse à donner un extrait de code.h-02
devrait être un enfant de l'un desli
s dans$("ul.tabs li")
- la révision de maintenant.rien ne semble fonctionner pour moi:
Bien, vous pouvez faire votre URL de quelque chose comme
http://site.com/index.html?voters
et puis, dans la page, vous vérifiezwindow.location.search
(recherche du bit, y compris le point d'interrogation). Si c'est"?voters"
ensuite, vous exécutez le code pour sélectionner l'onglet. Si c'est"?commenters"
ensuite, vous exécutez le code pour sélectionner cet onglet. Et cetera.index.html#voters
et vérifierwindow.location.hash
pour"#voters"
. Tout dépend si vous souhaitez que le navigateur considère que c'est un "page séparée" ... dans ce cas, utilisez?
. Si ce n'est pas le cas, utilisez#
.Je voudrais essayer de modifier votre code un peu. C'est comment j'allais le faire:
http://jsfiddle.net/RtCnU/8/
De cette façon, vous accomplir exactement ce que tu voulais.
C'est le code que j'ai utilisé:
et c'est le Javascript:
Laissez-moi savoir comment cela fonctionne!
Vous pourriez passer un paramètre à la page web via l'OBTENIR.
c'est à dire
www.yourpage.com?tab=tab1
alors, par exemple (à l'aide de php)
ensuite dans ton code JS, vous pouvez faire quelque chose comme:
bien que vous devriez vérifier pour s'assurer que le default_id est valide, et si pas de charge de travail par défaut(comme vous le faites déjà)
Modifier je viens de remarquer que la question a été de vouloir utiliser des Url formatée comme, http://www.example.com#h-02 dans lequel vous êtes mieux coller à l'aide de JS seulement
C'est ce que j'ai fait pour obtenir le mien de travail, basé sur la réponse de Matt. J'ai posté ceci pour aider les autres.
J'aime Dan Pouvoirs réponse, je suis actuellement en utilisant une version de ce. Je n'ai cependant, au premier abord, pense qu'il ne fonctionnait pas donc j'ai fait un
alert(window.location.hash)
et découvert qu'il comprenait la#
. Dan réponse est valide, bien que depuis il ne l'utiliser#
dans son onglet id, par exempletab="#tab_general"
. Donc, être conscient de cela.Si vous souhaitez lire votre nom de hachage sans le #, par exemple
tab="tab_general"
, remplacer:avec
Bien sûr, vous pouvez également modifier
tab
àid
ou quelque chose d'autre.Je n'ai pas compris comment faire un lien vers imbriquée onglets si, par exemple, lorsqu'un onglet contient une page, avec des sous-onglets.