2009-10-25 3 views
0

Je suis en utilisant ce code jquery pour afficher et masquer divs sur ma page. Comme vous pouvez le voir, je suis limité à 5 divs. Y a-t-il un moyen de les rendre dynamiques?Y at-il un moyen de rendre ce script jquery dynamique?

$(document).ready(function() { 
    $('.box').hide(); 
    $('a.toggle').click(function() { 
    $('.box').toggle(400); 
    return false; 
    }); 
}); 

<a href="#" class="toggle" title="Show Comments"><img src="images/read.gif" alt="" /></a> 
<div class="box" class="comment">hidden content</div> 

Ceci est mon code révisé

$(function() { 
    $('div.box').hide(); 
    $('a.toggle').click(function() { 
    $(this).next('div.box').toggle(400); 
    }); 
}); 

<div class="entry"> 
    <h3>Title</h3> 
    <p>content</p> 
    <p class="posted">Posted by Admin<br /> 
    <a href="#" class="toggle"> 
    <img src="read.gif" alt="" /> 
    </a> 
</div> 
<div class="box" class="comment">Hidden</div> 
+0

Pourriez-vous nous montrer le balisage du '# toggleN' et éléments' n de boxN'? – CMS

+0

Bien sûr .. Merci pour l'aide. brb – Jack

+0

Vous êtes-vous inscrit (e) deux fois pour poser la même question? http://stackoverflow.com/questions/1620377/jquery-parents-help – Mottie

Répondre

3

En regardant votre balisage, vous pouvez faire quelque chose comme ceci:

$(document).ready(function() { 
    $('div.box').hide(); 

    $('a.toggle').click(function() { // all A elements with class 'toggle' 
    $(this).next('div.box').toggle(400); // toggle the next DIV with class 'box' 
    }); 
}); 

lient Fondamentalement, un gestionnaire de clic à tous vos liens avec la classe toggle, et puis quand on clique dessus, il va chercher le prochain frère (par rapport au lien cliqué) qui est un div avec classe box, en utilisant les Traversing/next fonction.

Vérifiez l'exemple ci-dessus avec votre balisage here.

Edit: Nous avons examiné votre balisage et vos .toggle liens sont imbriqués dans un élément div.entry, il y a aussi un paragraphe non fermé, donc je l'ai réglé à nouveau le code à votre balisage:

$(function() { 
    $('div.box').hide(); 
    $('a.toggle').click(function() { 
    $(this).parents('.entry').next('div.box').toggle(400); 
    }); 
}); 

Vous remarquerez que je recherche l'élément div.entry, puisque les .box sont des frères et soeurs d'eux.

Vérifiez exemple une mise à jour here.

+0

Salut CMS, merci pour l'aide. Je n'ai absolument aucune connaissance javascript/jquery du tout. Y a-t-il un exemple que vous pouvez me montrer afin que je puisse suivre ce dont vous parlez? L'un des problèmes que je vois dans mon balisage est que j'ai 2 classes et que ça brise les choses. Est-ce permis d'avoir 2 classes dans le balisage? – Jack

+0

CMS, merci pour l'exemple. J'apprécie vraiment cela. Malheureusement, je ne peux pas le faire fonctionner. Quand je clique sur le bouton, rien ne se passe. Je posterai mon code révisé ci-dessus. – Jack

+0

Merci encore pour l'effort CMS. Ça ne marchera pas. Ce que j'ai fait était copier votre code exact et le coller dans une nouvelle page. Même avec rien d'autre que votre code et bien sûr la jquery bin, ça ne marchera pas. Des idées? – Jack

Questions connexes