javascript - Twitter Bootstrap for Rails 下拉菜单不可点击

标签 javascript css ruby-on-rails twitter-bootstrap

到目前为止,我在平板电脑和智能手机上使用的 Bootstrap 下拉菜单突然出现了一个奇怪的问题。折叠的(在小屏幕上)子菜单不可点击。它就像带有类下拉菜单的 ul 就像一个“ block ”,将 li 元素挡在其中并使它们无法点击。当我在小型设备上“长按”li 元素时,我无法选择它们。当我“快速单击”它们时,就像 ul 元素覆盖的区域以灰色闪烁一毫秒,显示被覆盖的区域。

我不确定是什么原因造成的。菜单在笔记本电脑上没有任何问题,即使我调整浏览器窗口的大小直到菜单折叠,我仍然可以将鼠标悬停在 li 元素上,以便它们获得“悬停效果”。

这是我的页面的骨架,直到菜单的第一个 li 元素,也许我在这里不小心弄坏了什么?据我了解,javascript 应该没问题,否则菜单根本打不开,对吧?

    <!-- MENU -->
    <div class="row">
      <div class="navbar span10 offset1">
        <div class="navbar-inner">
          <div class="container">
            <a class="btn btn-navbar" data-target=".nav-collapse" data-toggle="collapse">
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </a>
            <div class="nav-collapse collapse">
              <ul class="nav">
                <%= nav_link("Home", home_path) %>

                <li class="dropdown <%= "active" if params[:controller] == "courses" || params[:controller] == "enrolments" %>">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Courses <b class="caret"></b></a>
                  <ul class="dropdown-menu">  <-- blocking element?
                    <li><%= link_to "Overview", courses_path %></li>

我无法在这里或在谷歌上找到任何解决方法,所以我希望有人知道这个问题以及如何解决它。 非常感谢!

更新:我注意到如果我单击包含子菜单项的菜单项,整个菜单将无法单击。这意味着即使是以前可点击的菜单项也不能再点击了。

会不会有什么东西突然覆盖了整个区域?

更新 2 感谢您的回答,但我注意到一些事情将问题指向了一个新的方向。当我使用 twitter bootstrap 框架时,我使用的是下拉菜单和图片 slider 等。我注意到图片 slider 不再移动了。这可能与第一个问题有关吗?我查看了我的 git 提交日志,发现 bootstrap-alert.js(v2.3.1 -> v2.3.2)和 jQuery JavaScript 库(v.1.9.1 -> v1.10.2)版本发生了变化。我不明白为什么下拉功能仍然存在但 slider 不存在。这可能与此有关吗?

更新 3 事实证明,如果我替换 public/assets 文件夹中的 application.js 文件(将 jQuery JavaScript Library v1.10.2 替换为 jQuery JavaScript Library v1.9.1),一切都会恢复正常。但现在的问题是,当我预编译 Assets 时,它再次将 v1.9.1 替换为 v1.10.2。

版本 1.10.2 在哪里定义?我认为这可以帮助很多遇到同样问题的人。

最佳答案

您正在寻找的是子菜单。

dropdown 本质上是一个 block 的元素。 dropdown-menu 是 ul 的元素,dropdown-submenu 是 li 的元素,用于在下拉菜单中创建子菜单。

因此将 li 的类从下拉菜单更改为下拉子菜单。这将为下拉菜单调用 javascript 组件以呈现正确的行为。

        <div class="nav-collapse collapse">
          <ul class="nav">
            <%= nav_link("Home", home_path) %>

            <li class="dropdown-submenu <%= "active" if params[:controller] == "courses" || params[:controller] == "enrolments" %>">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Courses <b class="caret"></b></a>
              <ul class="dropdown-menu">  <-- blocking element?
                <li><%= link_to "Overview", courses_path %></li>

您必须设置元素的样式,默认情况下它使用标准的蓝色突出显示。查看子菜单部分了解更多信息:http://getbootstrap.com/2.3.2/components.html#dropdowns

关于javascript - Twitter Bootstrap for Rails 下拉菜单不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578026/

相关文章:

ruby-on-rails - 如何检查 rspec 代码覆盖率

ruby-on-rails - ActiveRecord::Relation::ActiveRecord_Relation_Link:Class 的未定义方法 `model_name'

javascript - jMapping V2.0 : not drawing markers in Rails 3 + jQuery-UJS project

javascript - JavaScript 可以创建无效的 DOM 是否正常?

javascript - 在 bonfire codeigniter 中添加按钮以将表格打印到打印机

javascript - @click 事件不会与带有@blur 的元素一起触发

css - Fullcalendar 事件具有不饱和的背景颜色

javascript - 如何创建一个 JavaScript 文件来打开另一个文件并打印其内容?

javascript - JQuery .css() 或 .hover() 中的任何一个都不起作用

HTML5 导航菜单文本