【问题标题】:One single bootstrap dropdown-menu for multiple elements一个用于多个元素的引导下拉菜单
【发布时间】:2023-04-07 13:37:01
【问题描述】:

我有多个按钮。我希望它们都显示相同/单个的下拉菜单元素,而不是为每个元素提供单独的下拉菜单。

我希望我可以利用 data-target 属性来做到这一点。

此外,我希望能够在任何元素上显示这个单一的下拉菜单。就我而言,表中的第一个元素。我试图让它首先使用按钮(然后可能会继续尝试 th 元素)所以我直接从引导带文档中复制了它并稍作修改,但是它不起作用。引导下拉菜单可以实现我想要的吗?

<link   href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script> 
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

<div class='row mb-1'>
    <div class='col-4'></div>
    <div class='col-4'>
        <button class="btn btn-secondary dropdown-toggle" data-target='.test-menu' type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            Dropdown button
        </button>
    </div>
    <div class='col-4'></div>
</div>

<div class='row mb-1'>
    <div class='col-4'></div>
    <div class='col-4'>
        <button class="btn btn-secondary dropdown-toggle" data-target='.test-menu' type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            Dropdown button
        </button>
    </div>
    <div class='col-4'></div>
</div>

<div class='row mb-1'>
    <div class='col-4'></div>
    <div class='col-4'>
        <button class="btn btn-secondary dropdown-toggle" data-target='.test-menu' type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            Dropdown button
        </button>
    </div>
    <div class='col-4'></div>
</div>


<div class="dropdown-menu test-menu" aria-labelledby="dropdownMenuButton">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
    <a class="dropdown-item" href="#">Something else here</a>
</div>

当我点击三个按钮中的任何一个时,什么都没有发生。

【问题讨论】:

  • 这可能是因为您需要包含 jquery 吗?

标签: bootstrap-4


【解决方案1】:

您不需要使用data-target 属性来使用多个下拉切换来控制同一个下拉菜单。事实上,下拉菜单没有data-target

这里的技巧是用位置设置为 relative 的任何内容来包装下拉菜单的切换和下拉菜单,即 position: relative;

在下面的示例中,我用&lt;div class="dropdown" /&gt; 包装了它们。

<div class="dropdown">
    <button class="btn btn-secondary dropdown-toggle">...</button>
    <button class="btn btn-secondary dropdown-toggle">...</button>
    <button class="btn btn-secondary dropdown-toggle">...</button>

    <div class="dropdown-menu">
        <a class="dropdown-item">...</a>
        <a class="dropdown-item">...</a>
        <a class="dropdown-item">...</a>
    </div>
</div>

演示: https://jsfiddle.net/davidliang2008/a0k7uqj1/28/

为了使下拉切换和下拉菜单正常工作,它们必须是兄弟姐妹。所以我认为这不适用于表中的任何&lt;th&gt; 元素,例如,因为它在那里有更多的嵌套级别,即&lt;tr&gt;&lt;thead&gt; 等。

【讨论】:

  • 好主意!非常感谢。这只有在元素彼此相邻(兄弟姐妹)时才有效,对吗?对我来说就是这样。对于任何发现这一点的人,希望在不是兄弟姐妹的元素上做下拉菜单,这是行不通的,不是@david-liang吗?
  • @Mikey4Dice:正确,至少对于 bootstrap 版本 4.3.1,为了使下拉菜单起作用,切换和菜单必须是同级的,并由相对位置元素包裹。跨度>
  • 有没有办法不让他们成为兄弟姐妹?实际上,就像问题示例中一样,这些元素在树中很可能不太接近。
  • @JeffPutz:不这么认为。您可以通过编写自定义 javascript 来触发下拉切换器来实现这一点。
  • 不幸的是,是的,没有脚本你不能这样做,但在这种情况下,它只是直接使用 Popper.js 的几行代码,它已经存在,因为你无论如何都需要它来用于 Bootstrap。跨度>
猜你喜欢
  • 2011-07-21
  • 2018-05-28
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 2016-08-10
  • 2017-01-10
相关资源
最近更新 更多