jQuery bascule (Cliquez pour afficher un div, tout en cachant les autres)

L'idée de base est que j'ai un tas de div dans lequel chacun peut être basculé (afficher/masquer).

Quand un div est basculé j'aimerais que d'autres div qui sont actuellement affichés à cacher, donc uniquement en permettant à un seul div pour être affiché à la fois.

En outre, je tiens à être en mesure de cliquer à l'extérieur de l'élément à masquer l'open div ainsi.

Juste pour rendre les choses plus claires, j'ai fourni un exemple qui fait actuellement tout ce que je veux à l'exception de la fermeture d'un div lors de l'ouverture d'un autre (un Seul div ouvert à la fois la fonctionnalité):

JS:

$(document).ready(function(){

  $('div.dropdown').each(function() {
    var $dropdown = $(this);

    $("a.dropdown-link", $dropdown).click(function(e) {
      e.preventDefault();
      $("div.dropdown-container", $dropdown).toggle();
      return false;
    });

});
    
  $('html').click(function(){
    $("div.dropdown-container").hide();
  });
     
});

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="dropdown-1" class="dropdown dropdown-processed">
  <a class="dropdown-link" href="#">Options</a>
  <div class="dropdown-container" style="display: none;">
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
    </ul>
  </div>
</div>

<div id="dropdown-2" class="dropdown dropdown-processed">
  <a class="dropdown-link" href="#">Options</a>
  <div class="dropdown-container" style="display: none;">
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
    </ul>
  </div>
</div>

<div id="dropdown-3" class="dropdown dropdown-processed">
  <a class="dropdown-link" href="#">Options</a>
  <div class="dropdown-container" style="display: none;">
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
    </ul>
  </div>
</div>

  • Ne accordéon faire ce que vous voulez? jqueryui.com/demos/accordion
  • Des sons comme ça, sauf qu'il n'a pas de fermeture automatique lorsque vous cliquez sur un autre.
  • Il y a un paramètre pour que, permettez-moi de le trouver.
  • Désolé, l'accordéon est un peu beaucoup pour ce que je suis à la recherche pour. Je préfère le garder est léger sans avoir besoin de plug-ins.
  • Ma réponse va faire tout ce que vous avez demandé, sans fermer le menu lorsque vous cliquez sur un élément de menu (qui d'autres réponses ont manqué...).
InformationsquelleAutor walker2238 | 2012-08-02