2011-09-30 2 views
-2

J'ai du mal à essayer de faire référence à l'occurrence suivante d'un élément avec un ID contenant une chaîne spécifique.Occurrence suivante de quelque chose, dans l'arborescence DOM

Fondamentalement, j'ai un lien, et je dois show() NEXT div agissant en tant que conteneur pour le montage.

<div> 
<a href="#" id="link-1">Link</a> // go from here 
</div> 

<div id="form-container-1" class="hidden"> // to here 
<form> 
... 
</form> 

Important à noter: Je ne suis pas seulement cibler un id ... dans le but de « 1 » dans le formulaire conteneur id est parce qu'il ya plusieurs. J'utilise le sélecteur "contient" id*="form-container"

+0

essayez next() pour la prochaine, et les enfants() pour tout ... attendez ... les enfants. Visitez le site Web de jQuery pour la documentation et les exemples. – adeneo

+0

Pourquoi n'avez-vous pas parcouru la documentation de jQuery? –

+0

IDs sont uniques, donc si vous connaissez l'ID, vous pouvez simplement utiliser $ ('# id') '... – ThiefMaster

Répondre

1

Si vous voulez trouver dynamiquement la forme correcte à afficher en fonction de l'identifiant alors quelque chose comme:

$('a').click(function() { 
    formId = $(this).attr('id').split('-')[1]; 
    $('#form-container-'+formId).show(); 
}); 

Alternativement, si vous voulez trouver le formulaire suivant après chaque lien:Dans ces deux cas, il est conseillé d'ajouter une classe unique aux liens qui afficheront les formulaires et mettront à jour les sélecteurs selon le cas.

+0

C'est plus comme ça. Tout ce que je fais ... cependant, ça ne fonctionne pas comme je l'espère. Peut-être la référence "id"? – dcolumbus

+0

J'ai mis à jour ma réponse pour utiliser le .attr(), essayez-le. – digout

+0

'attr' était ce qui manquait. Je revenais juste pour dire quelque chose. Aussi, dans ce cas, l'index commence à 1 ...donc ce serait 2. – dcolumbus

1

Si cela continue directement l'élément en cours, alors cela fonctionnera. Essayez ensuite d'utiliser une combinaison de parent() et de next() puis de . De cette façon, vous serez en mesure de référencer le div contenant, puis trouver le prochain div.

Exemple de travail: http://jsfiddle.net/PdatP/

jQuery:

$('a').click(function(){ 
    $(this).parent().next().show(); 
}); 
+0

Ci-dessus est exactement comment il est aménagé ... et 'next' ne fonctionne pas. 'this' est le lien' a' et je dois pouvoir référencer le div suivant pour pouvoir le montrer. – dcolumbus

1

Cela obtenir le prochain frère et montrer que l'élément

$('#link-1').next().show(); 

si son pas exactement l'élément suivant, vous pouvez utiliser siblings méthode comme;

$('#link-1').siblings('#form-container-1').show(); 

Ou si vous voulez montrer tous les éléments qui contiennent form-container dans leurs ids

0
$("#link-1").parent().next().show(); 
Questions connexes