Liste déroulante Bootstrap JS


Liste déroulante JS (dropdown.js)

Un menu déroulant est un menu basculable qui permet à l'utilisateur de choisir une valeur dans une liste prédéfinie.

Pour un didacticiel sur les listes déroulantes, lisez notre didacticiel Bootstrap Dropdowns .


Les classes de plugins déroulants

Class Description Example
.dropdown Indicates a dropdown menu
.dropdown-menu Builds the dropdown menu
.dropdown-menu-right Right-aligns a dropdown menu
.dropdown-header Adds a header inside the dropdown menu
.dropup Indicates a dropup menu
.disabled Disables an item in the dropdown menu
.divider Separates items inside the dropdown menu with a horizontal line

Via data-* Attributs

Ajouter data-toggle="dropdown"à un lien ou à un bouton pour basculer vers un menu déroulant.

Exemple

<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown Example</a>

Via Javascript

Activer manuellement avec :

Exemple

$('.dropdown-toggle').dropdown();

Remarque : L'attribut data-toggle="dropdown" est obligatoire, que vous appeliez ou non la méthode dropdown().



Options de liste déroulante

None

Méthodes déroulantes

Le tableau suivant répertorie toutes les méthodes de liste déroulante disponibles.

Method Description Try it
.dropdown("toggle") Toggles the dropdown

Événements déroulants

Le tableau suivant répertorie tous les événements déroulants disponibles.

Event Description Try it
show.bs.dropdown Occurs when the dropdown is about to be shown.
shown.bs.dropdown Occurs when the dropdown is fully shown (after CSS transitions have completed)
hide.bs.dropdown Occurs when the dropdown is about to be hidden
hidden.bs.dropdown Occurs when the dropdown is fully hidden (after CSS transitions have completed)

Astuce : Utilisez event.relatedTarget de jQuery pour obtenir l'élément qui a déclenché la liste déroulante :

Exemple

$(".dropdown").on("show.bs.dropdown", function(event){
  var x = $(event.relatedTarget).text(); // Get the text of the element
  alert(x);
});

Plus d'exemples

Changer l'icône caret à l'envers

L'exemple suivant change l'icône du signe d'insertion de pointer vers le bas vers le haut lorsque vous cliquez sur la liste déroulante :

Exemple

/* CSS: */
<style>
.caret.caret-up {
  border-top-width: 0;
  border-bottom: 4px solid #fff;
}
</style>

/* JS: */
<script>
$(document).ready(function(){
  $(".dropdown").on("hide.bs.dropdown", function(){
    $(".btn").html('Dropdown <span class="caret"></span>');
  });
  $(".dropdown").on("show.bs.dropdown", function(){
    $(".btn").html('Dropdown <span class="caret caret-up"></span>');
  });
});
</script>

Barre de navigation avec liste déroulante

L'exemple suivant ajoute un menu déroulant pour un bouton dans la barre de navigation :

Exemple

<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">WebSiteName</a>
    </div>
    <div>
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li class="dropdown">
          <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1
          <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Page 1-1</a></li>
            <li><a href="#">Page 1-2</a></li>
            <li><a href="#">Page 1-3</a></li>
          </ul>
        </li>
        <li><a href="#">Page 2</a></li>
        <li><a href="#">Page 3</a></li>
      </ul>
    </div>
  </div>
</nav>

L'exemple suivant ajoute un menu déroulant avec un formulaire de connexion dans la barre de navigation :

Exemple

<ul class="nav navbar-nav navbar-right">
  <li class="dropdown">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Login <span class="glyphicon glyphicon-log-in"></span></a>
    <div class="dropdown-menu">
      <form id="formlogin" class="form container-fluid">
        <div class="form-group">
          <label for="usr">Name:</label>
          <input type="text" class="form-control" id="usr">
        </div>
        <div class="form-group">
          <label for="pwd">Password:</label>
          <input type="password" class="form-control" id="pwd">
        </div>
          <button type="button" id="btnLogin" class="btn btn-block">Login</button>
      </form>
      <div class="container-fluid">
        <a class="small" href="#">Forgot password?</a>
      </div>
    </div>
  </li>
</ul>

Listes déroulantes à plusieurs niveaux

Dans cet exemple, nous utilisons jQuery pour ouvrir des listes déroulantes à plusieurs niveaux en un clic :

Exemple

<script>
$(document).ready(function(){
  $('.dropdown-submenu a.test').on("click", function(e){
    $(this).next('ul').toggle();
    e.stopPropagation();
    e.preventDefault();
  });
});
</script>

Dans cet exemple, nous avons créé une .dropdown-submenuclasse personnalisée pour les listes déroulantes à plusieurs niveaux :

Exemple

 /* CSS: */
<style>
.dropdown-submenu {
  position: relative;
}

.dropdown-submenu .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -1px;
}
</style>

/* JS: */
<script>
$(document).ready(function(){
  $('.dropdown-submenu a.test').on("click", function(e){
    $(this).next('ul').toggle();
    e.stopPropagation();
    e.preventDefault();
  });
});
</script>