2009-08-07 4 views
3

donc j'ai plusieurs conteneurs avec ce balisage sur une page:JQuery le plus proche() aider

 <div class="box w400"> 
      <div class="box-header"> 
       <span class="expand-collapse">expand/collapse</span> 
       <h3>Heading</h3> 
      </div> 
      <div class="box-content"> 
       <p>Some content here...</p> 
      </div> 
     </div> 

Et je suis en train de réaliser que après avoir cliqué sur sur la durée .expand-effondrement, la div .box contenu va glisser vers le haut ou vers le bas (bascule).

Voici jQuery J'utilise, je suis en train de réaliser cela avec le plus proche():

 $(document).ready(function() { 
      $('.expand-collapse').click(function() { 
       $(this).closest('.box-content').slideToggle('slow'); 
      }); 
     }); 

Mais il ne fonctionne pas pour une raison quelconque :(

Répondre

4

Essayez ceci:

$(document).ready(function() { 
    $('.expand-collapse').click(function() { 
     $(this).parent().next('.box-content').slideToggle('slow'); 
    }); 
}); 

qui sélectionne le prochain frère du div parent, il ne fait pas usage de la plus proche.

+0

Ne fonctionne pas, aussi. –

+0

@Richard Knop - J'ai édité la réponse, essayez-la. – karim79

+0

Merci cela fonctionne :) –

2

Le plus proche() trouve l'élément parent ferme. Dans votre cas, la plage n'a aucun élément parent avec la classe .box-content. pourquoi ne pas simplement faire $ ('. box-content'). slideToggle ('slow'); ??

edit: J'ai raté la partie où vous en avez plusieurs sur une page. le parent(). next devrait fonctionner.

+0

Cela va basculer toutes les divs avec le .box-contenu de classe au lieu d'un seul. – karim79

+0

Parce qu'il y a plusieurs conteneurs sur la page et je veux que chaque extension .expand-collapse permute uniquement son contenu .box, pas tous sur la page. –

+0

désolé, j'ai relu le poste et j'ai vu qu'il y en avait plusieurs par page. –

Questions connexes