2013-09-22 211 views
11

我知道堆栈溢出有很多像这样的问题,我看过他们,但我的下拉菜单仍然无法正常工作。Twitter Bootstrap下拉菜单不起作用

这里是我的代码:

<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> 

这有什么错呢?

编辑

所以下拉菜单现在张贴到这个问题的答案的工作。但是,如果我包含在那里提到的脚本,模式窗口停止工作。当我评论这些条目时,它会重新开始工作。

下面是我的模态窗口中的代码:

<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> 

和JavaScript的触发器:

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

回答

9

似乎在的jsfiddle做工精细,这里有一个例子http://jsfiddle.net/2hGuv/

你必须记得导入js文件。 这里是以下文件中的代码输入: http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css http://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> 
+0

嘿,工作得很好,但如果我添加这些脚本我的模态窗口停止工作。任何想法为什么会这样? – Anon

+0

你能看看我的编辑 – Anon

11

检查,如果你有这样的js文件:$('.dropdown-toggle').dropdown();

检查,如果你有这样的事情与此序列:

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

选中此项:Bootstrap drop-down menus and tabbable tabs on Docpad

+0

为什么heck不会在bootstrap.js文件中有'$('。dropdown-toggle')。dropdown();'?我手动添加它,它的工作原理!好的发现;但为什么它不在那里? – user1477388

11

在我准备功能添加这个固定的问题,我

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

嗨,经过6个小时的搜索终于找到了答案,它有所帮助。谢谢。 –

+0

嗨,再次,添加此解决方案后,我意识到,菜单不是因为它应该处于折叠模式(“崩溃”)时。当单击按钮时,我可以看到发生了一些情况,但菜单没有出现,菜单也没有向下扩展。你有什么想法可以解决吗? –

+1

你好,这是我最终的解决方案。我希望它可以帮助有人遇到麻烦:/ *从这里开始*/$(function(){ \t $('。dropdown-toggle')。dropdown(); \t $('。btn.btn-navbar')。上( '点击',函数(){ \t \t变量$导航栏= $($(本)。数据( '目标')); \t \t变种高度= $ navbar.css( '高度'); \t \t \t \t如果(高度== '0像素'){ \t \t \t $ navbar.css( '高度', '100%'); \t \t} \t \t else { \t \t \t $ navbar.css('height','0px'); 'NAV-collapse.collapse ' \t \t} \t}) \t \t $()的坍塌(' 秀'); 。 \t \t $( 'NAV-collapse.collapse UL立一个 ')上(' 点击',函数(E){ \t \t e.stopPropagation(); \t}); });/*在此结束*/ –

20

对于任何的问题仍未解决。我发现我是包括两次引导js文件(我分裂了我的头,身体和页脚文件,并没有意识到,我包括他们俩在页脚和页眉。

可能会帮助别人。

+0

它解决了我的问题。谢谢:) – Mihir

17

我也有类似的问题。 而原因是在头标签js文件错误的顺序。 正确的顺序是jquery.min.js第一比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> 
+0

这个问题使我疯了,这解决了我的问题。谢谢。 –

+0

你救了我的一天。非常感谢你。这解决了我在IE中的dropdown-toggle和accordion-toggle问题。 –

2

因为我的这是因为添加脚本的顺序不对,应该是这样的:

<script src="Scripts/jquery-1.9.1.min.js"></script> 
<script src="Scripts/bootstrap.min.js"></script> 
0

在我的情况下,问题是与jQuery版本。 在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') 
    } 

注:“引导\的JavaScript的需要jQuery的1.9版本。1或更高,但低于版本3'

我用jQuery-1.11.3.js替换了本地jQuery文件的代码,它开始工作。

希望它能为你工作。

-1

在我的情况下,在我的下拉按钮上有一个组件,我记下它花了太长时间。 Noob错误,但它可能有助于某人。

+0

这个问题已经有一个接受的答案以及几个答案。尝试回答一些新问题。干杯 –

+0

这是一个noob的答案和从我身边的noob错误,但它不是一个重复的答案...所以我认为这是有效的... 干杯 –