web-dev-qa-db-fra.com

Le menu déroulant Twitter Bootstrap ne fonctionne pas

Je sais qu'il y a beaucoup de questions de ce type sur Stack Overflow et je les ai consultées, mais mon menu déroulant ne fonctionne toujours pas.

Voici mon code:

<div class="navbar navbar-inverse navbar-fixed-top">
                <div class="navbar-inner">
                        <div class="container">
<ul class="nav pull-left">
<li><a href="#myModal" class="dropdown-toggle" data-toggle="modal" data-keyboard="false" data-backdrop="static">Login</a></li>
 <li class="dropdown" id="accountmenu">
                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">My Account<b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">Login</a></li>
                            <li><a href="#">Register</a></li>
                        </ul>
                    </li>
                        </div>
                </div>
</div>

Qu'est ce qui ne va pas avec ça?

MODIFIER

Le menu déroulant fonctionne donc maintenant avec la réponse affichée à cette question. Cependant, si j'inclus les scripts mentionnés ici, la fenêtre modale cesse de fonctionner. Et quand je commente ces entrées, ça recommence à fonctionner. 

Voici le code pour ma fenêtre modale:

<div class="modal hide" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
    aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
            X</button>
        <h3 id="myModalLabel">
            Enter your Credentials</h3>
    </div>
    <div class="modal-body">
        <form class="form-horizontal">
    <div class="control-group">
    <label class="control-label" for="inputEmail">Email</label>
    <div class="controls">
    <input type="email" id="inputEmail" placeholder="Email">
    </div>
    </div>
    <div class="control-group">
    <label class="control-label" for="inputPassword">Password</label>
 </div>
    </div>
    <div class="control-group">
    <div class="controls">
    <label class="checkbox">
    <input type="checkbox"> Remember me
    </label>
    <a href="news.php" class="btn btn-primary">Login</a>
    <a href="registration.php" class="btn btn-primary">Sign up</a>
    </div>
    </div>
    </form>
    </div>
</div>

Et le JavaScript pour la gâchette:

$('#myModal').on('hide',function(){
    $('.nav > li > a.modal-open-li').removeClass('modal-open-li');
});
11
Anon

Semble fonctionner correctement dans jsFiddle, voici un exemple http://jsfiddle.net/2hGuv/

N'oubliez pas d'importer le fichier js . Voici le code avec les fichiers suivants importés: http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.csshttp://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js

<div class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            <ul class="nav pull-left">
                <li><a href="#myModal" class="dropdown-toggle" data-toggle="modal" data-keyboard="false" data-backdrop="static">Login</a>

                </li>
                <li class="dropdown" id="accountmenu"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">My Account<b class="caret"></b></a>

                    <ul class="dropdown-menu">
                        <li><a href="#">Login</a>

                        </li>
                        <li><a href="#">Register</a>

                        </li>
                    </ul>
                </li>
        </div>
    </div>
</div>
9
Mortalus

Pour tous ceux qui rencontrent encore ce problème. J'ai constaté que j'inclusais deux fois les fichiers bootstrap js (j'avais divisé mes fichiers d'en-tête, de corps et de pied de page et je n'avais pas réalisé que je les incluais à la fois dans le pied de page et dans l'en-tête. 

Peut aider quelqu'un. 

19
hammus

J'ai eu un problème similaire . Et la cause était le mauvais ordre des fichiers js dans la balise head . Le bon ordre est jquery.min.js d'abord que bootstrap.min.js

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
17
waluga

Ajouter ceci dans ma fonction prête corrige le problème pour moi

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

Vérifiez si vous avez ceci dans les fichiers js: $('.dropdown-toggle').dropdown();

Vérifiez si vous avez quelque chose comme ça avec cette séquence:

<script src="jquery.js"></script>
<script src="bootstrap.js"></script>
<script type="text/javascript"> $(document).ready(function () { $('.dropdown-toggle').dropdown(); }); </script>

vérifier ceci: Menus déroulants Bootstrap et onglets tabulables sur Docpad

11
Undefined Behavior

Pour le mien, c’était parce que l’ordre d’ajouter des scripts n’était pas correct, ça devrait être comme ça:

<script src="Scripts/jquery-1.9.1.min.js"></script>
<script src="Scripts/bootstrap.min.js"></script>
2
Majid khalili

Dans mon cas, le problème était avec la version de jQuery . In bootstrap.js v3.3.6

if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {
    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')
  }

Remarque: 'Bootstrap \' JavaScript nécessite jQuery version 1.9.1 ou supérieure, mais inférieure à la version 3 '

J'ai remplacé le code du fichier jQuery local par jQuery-1.11.3.js et il commence à fonctionner.

J'espère que cela fonctionnera pour vous aussi.

0
Pawan Kumar Thakur