twitter bootstrap 下拉菜单在应该关闭时没有切换

2024-04-18

天哪,我一直在为这件事抓狂。 4个小时的下拉菜单。

我正在使用 Twitter Bootstrap。

顶部的固定导航有一个下拉菜单,非常标准的东西。

只是下拉菜单没有像平常那样关闭。仅当按下切换按钮本身时,它才会打开和关闭,而不是按下菜单中的项目或用户单击菜单外部时(这两者都应关闭下拉菜单)。

我唯一做的非标准的事情是使用 iframe 和 bootswatch 的主题。

我以前没有遇到过这样的问题,所以我感觉这可能是一个错误(今天将 bootstrap 升级到 2.1.0,将 jquery 升级到 1.7.2)。

所有代码都在这里:

    <!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>test</title>
        <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
        <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->
        <!-- Le styles -->
        <link href="./css/bootstrap.css" rel="stylesheet">
        <style>
            iframe {
                border: 0px;
                height: 95%;
                left: 0px;
                position: absolute;
                top: 50px;
                width: 100%;
            }
        </style>
    </head>
    <body>
        <div class="navbar navbar-fixed-top">
            <div class="navbar-inner">
                <div class="container">
                    <a class="brand" target="mainframe" href="./home.html">
                       Brand
                    </a>
                    <ul class="nav">
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" role="button" data-toggle="dropdown">
                                <i class="icon-pencil icon-white"></i>
                                Sample
                                <b class="caret"></b>
                            </a>
                            <ul class="dropdown-menu" role="menu">
                                <li>
                                    <a target="mainframe" href="./home.html#">One</a>
                                </li>
                                <li>
                                    <a target="mainframe" href="./home.html#">Two</a>
                                </li>
                                <li>
                                    <a target="mainframe" href="./home.html#">Three</a>
                                </li>
                                <li>
                                    <a target="_blank" href="#">Four
                                        <i class="icon-share-alt"></i>
                                    </a>
                                </li>
                                <li>
                                    <a target="_blank" href="#">Five
                                        <i class="icon-share-alt"></i>
                                    </a>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a href="#">
                                <i class="icon-certificate icon-white"></i>Stuff</a></li>
                        <li>
                            <a href="#">
                                <i class="icon-globe icon-white"></i>Things</a></li>
                        <li>
                            <a target="mainframe" href="./home.html">
                                <i class="icon-film icon-white"></i>Nothing</a></li>
                    </ul>
                </div>
            </div>
        </div>
        <div class="container">
            <iframe id="frame" name="mainframe" src="./home.html"></iframe>
            <!-- /container -->
        </div>
        <!-- Le javascript==================================================-->
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

        <script src="./js/bootstrap.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $('.dropdown-toggle').dropdown();
                var frameheight = window.innerHeight - 50;
                document.getElementById("frame").style.height = frameheight + "px";
            });

            $(window).resize(function () {
                var frameheight = window.innerHeight - 50;
                document.getElementById("frame").style.height = frameheight + "px";
            });
        </script>
    </body>
</html>

住在这里:http://www.joshlevent.com/dropdownbug/ http://www.joshlevent.com/dropdownbug/


默认情况下,iframe 不会将点击事件传播到其父级。您需要添加代码来手动执行此操作。除了能够编辑正在加载的 iframe 内容之外,跨域限制还要求您从与页面相同的域加载 iframe 内容。

这需要从withiniframe 页面:

$('html').on('click', function () {
  parent.$('#frame').trigger('click');
});

where #frame是你的 iframe 的 id。您可以将点击委托给父级中的任何内容(例如,'body')那也可以。取决于您希望将 iframe 中的内容与页面耦合的紧密程度。

因此,这应该处理关闭菜单的页面。

重要更新

至于点击菜单项关闭菜单,显然在最新的更新(2.0.4 > 2.1.0)中存在一个bug[?]:选择选项时下拉菜单不会关闭 https://github.com/twitter/bootstrap/issues/4497。选择器已更改为'.dropdown form' to '.dropdown',所以现在曾经是一个著名的功能,可以让表单中的下拉菜单变得更容易使用,现在已经演变成一个回调,可以阻止对下拉菜单项的所有点击。

临时解决方案是包含以下代码,直到错误修复(2.1.1):

$('body')
  .off('click.dropdown touchstart.dropdown.data-api', '.dropdown')
  .on('click.dropdown touchstart.dropdown.data-api'
    , '.dropdown form'
    , function (e) { e.stopPropagation() })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

twitter bootstrap 下拉菜单在应该关闭时没有切换 的相关文章

随机推荐

  • Laravel 在关系模型上按角色名称进行雄辩排序

    我遇到了一个问题 我必须根据模型的关系数据对模型集合进行排序 排序 我已经这样设置了 Models User Team TeamUser Role The TeamUser模型是一个枢轴模型 表 包含user id and team id
  • 悬停时圆形裁剪为圆形边框

    I have an unordered list displayed as a table Each list element contains an image and a name title The image is cropped
  • 如何增加雪花中的可变大小限制?

    我正在尝试通过执行例如来设置变量 SET Variable 1 xxxx 但收到此错误 未完成对 Variable 1 的分配 因为值超出了变量的大小限制 其大小为 309 限制为 256 内部存储大小以字节为单位 另一种方法可以是使用 S
  • 对包含字符串、日期和数字的数组进行排序

    var myArray aaaa 2013 09 25 ssss9 txt aaaa 2013 09 25 ssss8 txt aaaa 2013 09 26 ssss1 txt aaaa 2013 09 25 ssss10 txt aaa
  • 如何在计时器触发后正确调用函数进行单元测试。角度 7、RXJS 6

    在我的 Angular 7 应用程序中 我有一个用于跟踪活动用户任务的服务 在该服务中 计时器每秒运行一次 以检查是否有任何任务在 30 秒内仍未完成 如果发现任何任务已过期 则该任务将通过服务上的事件发射器发出 以便在其他地方处理 当应用
  • Node.js 快速文件服务器(通过 HTTP 的静态文件)

    是否有 Node js 即用工具 安装时使用npm 这将帮助我通过 HTTP 将文件夹内容公开为文件服务器 例如 如果我有 D Folder file zip D Folder file2 html D Folder folder file
  • 从随机像素进行图像插值

    我想问一个关于单通道图像插值的问题 选择单通道只是为了简单起见 否则我正在处理多通道图像 假设有一个纯黑色背景 像素强度为0 的单通道图像 其上有一些强度值非零的像素 我想应用插值算法 用来自相邻非零强度像素的插值填充图像的整个黑色区域 您
  • 有没有办法指定图像的最大高度或宽度?

    我希望图像的高度为 725 或宽度为 500 并保持其纵横比 当我的图像高度超过 725 且厚度小于 500 时 它们会被拉伸以适合 500 的宽度 做这个的最好方式是什么 以下是我现在正在做的事情
  • 反序列化 json 对象数组,其中包含 json 对象

    如何在 C 中反序列化 json 对象数组 这是我的 json id 255521115 user username userinfo id 158 online false 我有这个代码来获取用户名 JsonProperty user p
  • javascript - 按钮需要单击两次才能触发 onclick

    为什么我的按钮需要单击两次才能触发 onclick 事件 stackoverflow 上还有其他一些线程也存在同样的问题 但在我发现的所有线程中 原始发布者将事件处理程序放在函数内 我的代码不是这样的 Html ul li First ch
  • 在 JavaScript 中从具有任意基数的整数生成字符串

    在 JavaScript 中 您可以从数字生成字符串 如下所示 123 toString 36 gt 3f 如果你尝试做任意基础 123 toString 40 You get Uncaught RangeError toString ra
  • 如何使用 bootstrap-multiselect 动态隐藏/显示选项?

    我在用引导多选 http davidstutz github io bootstrap multiselect 为用户提供对两个按键菜单的良好控制 我的第一个菜单叫做groups和其他称为queues 队列中的每个选项都有一个 HTML5
  • Octave-'endfunction' 命令与 'endif' 匹配

    有人可以告诉我我的代码有什么问题吗 sinlaw 150 30 39 8 parse error near line 30 of file endfunction command matched by endif function phi
  • 仅当应用程序 100% 完成时,才能在仪器测试后正确清理/拆卸

    我有一堆端到端仪器测试 依赖于 Espresso 它们启动我们的启动器活动 然后在我们的应用程序中导航 最终创建多个活动 在 的最后each测试我们的 After带注释的拆卸方法执行一些清理工作 我们遇到的问题是 测试完成 成功或失败的断言
  • Xcode 不断展开项目导航器中的所有组

    从几天前开始 Xcode 不断扩展项目导航器中的所有组和子组 我反复折叠它们 这样我就可以专注于我正在做的事情 然后我回去 它们都再次展开 还有其他人经历过吗 我折叠一个组 移至 Xcode 中的另一个选项卡 然后返回 所有组都再次展开 这
  • Lambda 属性值选择器作为参数

    我需要修改一个方法 以便它有一个额外的参数 该参数将采用 lambda 表达式 该表达式将用于内部对象以返回给定属性的值 请原谅我可能错误地使用了术语 因为这是我第一次尝试 LINQ 表达式 我尝试寻找答案 但正如我所提到的 我的术语似乎不
  • 使用 paramiko 检查远程主机上是否存在路径

    帕拉米科的SFTP客户端 http www metasnark com paramiko docs paramiko SFTP class html显然没有exists方法 这是我当前的实现 def rexists sftp path os
  • JavaFX - 在 DirectoryChooser 中显示文件

    是否可以使 DirectoryChooser 显示文件 而不仅仅是目录 与此处描述的问题相同JFileChooser 选择目录但显示文件 https stackoverflow com questions 2883447 jfilechoo
  • 在reactjs中添加内联样式而不使用JSX

    我正在尝试使用reactjs向元素添加内联样式 我发现 var divStyle color white backgroundImage url imgUrl ReactDOM render div Hello World div moun
  • twitter bootstrap 下拉菜单在应该关闭时没有切换

    天哪 我一直在为这件事抓狂 4个小时的下拉菜单 我正在使用 Twitter Bootstrap 顶部的固定导航有一个下拉菜单 非常标准的东西 只是下拉菜单没有像平常那样关闭 仅当按下切换按钮本身时 它才会打开和关闭 而不是按下菜单中的项目或