2010-10-27 6 views
0

J'ai trois champs de saisie pour collecter les numéros de téléphone des utilisateurs. J'affiche un champ et cache les deux autres. J'ai placé un lien (ajouter le numéro de la maison) ci-dessous et quand vous clique sur le lien, il affiche le champ de saisie caché. Et j'ai placé un lien de plus en dessous quand on clique sur le dernier champ de saisie.Comment utiliser jquery pour afficher les champs de formulaire cachés

<input type="text" /> 
    <a href="#" class="show" >Add Home Number</a> 
    <div style="display: none"> 
     <input type="text" /> 
    <a href="#" class="show" >Add Office Number</a> 
    </div>    
    <div style="display: none"> 
     <input type="text" /> 
    </div>    

Et le jquery ressemble à ceci ..

<script> 
    $(function(){ 
    $(".show").click(function() { 
    $(this).next("div").show("slow"); 
    }); 
    }); 
</script> 

Le premier lien fonctionne très bien, mais la seconde ne fonctionne pas.

J'apprécie toute aide.

Merci.

+0

Works pour moi: http://www.jsfiddle.net/nick_craver/NMzMy/ –

+0

Mon mauvais lien va à l'intérieur du div caché. J'ai mis à jour la même chose dans la question. Cela ne fonctionne pas quand le lien est à l'intérieur du div caché. –

Répondre

0

.next() sélectionne uniquement l'élément suivant de frères et soeurs. Vos liens n'ont pas de frères et sœurs ultérieurs, car vous fermez immédiatement l'élément parent (le div). Vous devez sélectionner le prochain frère du div:

<script> 
    $(function(){ 
     $(".show").click(function() { 
      $(this).parent().next("div").show("slow"); 
     }); 
    }); 
</script> 
2

vous devez utiliser la fonction each:

comme ceci:

$(".show").each($(this).click(function() { 
    $(this).next("div").show("slow"); 
    }) 
); 
+0

Essayé cela ne fonctionne pas. –

+0

votre structure htm n'est pas bonne. Je n'ai pas vu ça. et il est préférable d'utiliser chaque variante. – helle

Questions connexes