2009-09-06 6 views
0

J'ai 3 onglets. Chacun d'eux a un div appelé optionnel, en dehors des autres éléments. optionnel est initialement caché en utilisant Javascript, je veux utiliser CSS (c'est donc si js est désactivé, le div ne sera pas caché du tout).JQuery: masquage/affichage d'un élément dans un onglet inactif

Je l'utiliser pour cacher en option

$(function(){ 
    $('#optional').hide(); 
}); 

Maintenant, cela fonctionne très bien sur le premier onglet, mais ne cacherons pas sur les deux onglets suivants. Ils ont tous le même code, aucun conflit de nom et aucune erreur javascript signalée.

Une idée de ce que je fais mal?

+0

Les ID sont uniques, vous ne pouvez avoir qu'un seul élément avec un ID "optionnel" ... – James

+1

DAMMIT! Faire une réponse, je vais l'accepter.J'ai effectivement fait de l'illustration (vraiment ... sur papier!) Sur des scénarios qui pourraient être possibles ... comme un organigramme bizarre, la prise en compte de divers plugins que j'utilise et en passant par leur code et merde ... Je ne peux pas croire que j'ai manqué quelque chose aussi simple: – HyderA

Répondre

2
$(function(){ 
    $('div.optional').hide(); 
}); 

Classname au lieu de id, car les ID doivent être uniques. Par le DOM/JS, sinon html.


Modifié: pour changer ...('.optional')...- ...('div.optional')... qui devrait réduire le temps nécessaire à la fonction de travailler (car il est à la recherche par un seul jeu de balises <div> plutôt que tous, en les examinant pour leur nom de classe

.
+0

"div.optional" n'est pas va être plus rapide que ".o ptional "dans la plupart des navigateurs, puisque avec getElementsByClassName natif est utilisé ... – James

+0

je dois leur donner à la fois des ID uniques et un nom de classe, donc ce n'est pas grave, je vais utiliser des ID de toute façon. Merci pour votre aide les gars ... Je vais attendre pour voir si JP affiche une réponse depuis qu'il était le premier ... puis accepter un! – HyderA

+0

@ J-P, sérieusement? J'ai toujours supposé que l'utilisation de 'element.classname' signifiait que le navigateur ne regardait que les divs du document, alors que' .classname' (aucun élément) signifiait que le navigateur devait examiner le nom de classe de * chaque * élément à l'intérieur l'étiquette du corps (éventuellement, y compris l'étiquette du corps, je ne suis pas sûr). Je me rends compte que ce sera une augmentation de vitesse presque imperceptible, mais cela valait la peine à l'époque. –

Questions connexes