当前位置: 首页 > 知识库问答 >
问题:

单击某个元素时,引导下拉菜单无法关闭

申屠泳
2023-03-14

我使用javascript函数dropdown('toggle')启动引导下拉菜单,如他们的文档中所述。

通常,每当您在下拉列表外部单击或选择其中一个选项时,下拉列表都会隐藏。

通过javascript启动时不会发生这种情况。

在此复制中,您将看到两个菜单:

  • 使用"组件"触发器按预期工作的人
  • 另一个,使用右键单击,它不像预期的那样工作。(它不会在单击外部或甚至在元素单击时关闭)

当我在下拉菜单外单击时,我可以通过以下方式“手动”摆脱下拉菜单:

$('body').removeClass('open');

但是我不太确定为什么下拉菜单的工作方式和你用正常程序触发它们的方式不一样。不得不手动隐藏它们似乎不是最好的解决办法...

共有3个答案

古棋
2023-03-14

我在鼠标上添加了一个监听器,当你点击里面时,它不会关闭,所以当你想要或点击外面时,它会关闭:http://jsfiddle.net/q6po6jzh/1/

$(document).mousedown(function (e) {
  var container = $("#menu");

  if (!container.is(e.target) && container.has(e.target).length === 0 && container.parent().hasClass('open')) {
      container.dropdown('toggle')
      container.parent().removeClass('open');
  }
});

但是如果你也想在点击时关闭,我想@wero答案可能更好。

淳于博
2023-03-14

在Javascript中打开与数据切换不兼容。我曾经使用此代码激活Javascript的下拉列表:

$(document).on("contextmenu", "body", function (event) {
    //we won't show the default context menu
    event.preventDefault();

    //showing it close to our cursor
    $('#menu').css({
        top: (event.pageY) + "px",
        left: (event.pageX) + "px"
    }).show();

    $(document).on('click.contextmenu', function () {
         $('#menu').hide();
         $(document).off('click.contextmenu');
    });
});
巫马星雨
2023-03-14

我从boostrap问题论坛得到了一个答案,他们解释了如何处理它:

B.您缺少一个

C.缺少带有data toggle=“dropdown”的元素(未明确记录,但后面有所有示例,并与中的警告相关)http://getbootstrap.com/javascript/#callout-下拉列表(需要数据)

这是溶液的复制品。(在任意位置单击鼠标右键以查看下拉菜单)

超文本标记语言

<div class="wrapper">
    <span data-toggle="dropdown"></span>
    <ul class="dropdown-menu" id="menu">
        <li><a href="#">Download file</a></li>
        <li><a href="#">Upload file</a></li>
    </ul>
</div>

Javascript

//context menu for orders table
$(document).on("contextmenu", "body", function (event) {
    //we won't show the default context menu
    event.preventDefault();

    //showing it close to our cursor
    $('#menu').dropdown('toggle').css({
        top: (event.pageY) + "px",
        left: (event.pageX) + "px"
    });
});

 类似资料:
  • 嗨,我正在尝试自动启动下拉菜单。默认情况下,它的可见性是隐藏的。将鼠标悬停在它上面时,它的可见性属性显示为可见。我可以单击下拉菜单,但是在单击下拉菜单后,我的selenium脚本不能从下拉菜单中选择值。 错误:线程"main"org.openqa.selenium.ElementNotVisibleException异常:无法单击元素 HTML代码段

  • 在我们的应用程序中,当我将鼠标放在菜单项上时,将出现下拉菜单项。在这里我想通过点击它来选择一个项目。主菜单:管理子菜单:管理频道,管理用户在selenium webdriver中,我尝试通过给出xpath,linktext,partial link文本直接点击管理频道。

  • 我试图创建一个自动的网络会话,我登录到一个网站,并从下拉框中选择一个选项。我能够使用硒进入页面,但我无法点击打开下拉菜单的栏,然后选择我想要的选项。这是页面的截图,它的超文本标记语言代码:[![在此输入图像描述][1]][1][![在此输入图像描述][2]][2] 我想单击下拉列表中的“降级性能”选项。我有点被困在这里,因为下拉列表的HTML与[this one][3]根本不相似(无法“选择”)。

  • 无法定位元素 我正在尝试使用给定的url登录并在这里选择日历:https://classic.crmpro.com/ 在使用隐式等待之后,我使用了以下方法进行定位: 请让我知道我能做什么。

  • 问题内容: 我有一个Twitter Bootstrap下拉菜单。正如所有Twitter Bootstrap用户所知,单击(甚至在其中单击)时,关闭菜单。 为避免这种情况,我可以轻松地在下拉菜单上附加一个click事件处理程序,只需添加著名的即可。 但是,这看起来很简单,而且是非常普遍的行为,而且由于(以及)事件处理程序都委派给了对象,因此这些元素(上 一个/下一个 控件,…)上的事件将被“忽略”。

  • 我有一个Twitter引导下拉菜单。正如所有Twitter引导用户都知道的那样,下拉菜单会在点击时关闭(甚至在其中点击)。 为了避免这种情况,我可以很容易地在下拉菜单上附加一个click事件处理程序,并简单地添加著名的。 但是,这看起来很简单,也是一种非常常见的行为,而且由于(以及)事件处理程序被委托给对象,因此这些元素(Prev/Next controls,...)上的事件将被“忽略”。 依赖T