单击以选中复选框时避免关闭下拉菜单

Posted

技术标签:

【中文标题】单击以选中复选框时避免关闭下拉菜单【英文标题】:Avoid closing dropdown when clicking to checked a checkbox 【发布时间】:2017-12-25 20:54:00 【问题描述】:

当用户单击下拉列表中的复选框时,我使用以下代码隐藏或显示表中的列:

JS

$('#columnsListDropDown :checkbox').on('change', function() 
      $("#myTable").find("[data-column='" + this.value + "']").toggle(this.checked);
      return false;
);

html

<ul class="dropdown-menu columnsFilterDropDownMenu" id="columnsListDropDown">
    <li>
        <label class="small" data-value="Type">
            <input type="checkbox" value="Type" checked="true">Type</label>
    </li>
    <li>
        <label class="small" data-value="Release">
            <input type="checkbox" value="Release" checked="true">Release</label>
    </li>
</ul>

当我点击复选框本身时,下拉菜单保持打开状态,但当我点击标签时,下拉菜单关闭。在这种情况下,我会让下拉菜单打开。我该怎么做?

【问题讨论】:

请包含所有相关代码,如css等 this.valuethis.checked 是否正确? @ElmerDantas 是的,因为单击复选框时代码可以正常工作 点击标签时onchange函数会触发吗(可以在里面添加console.log查看)?如果没有,您可以添加类似$('#columnsListDropDown :label').on('click', function() /* add code to get the checkbox linked to this label */.trigger('change'); @Kaddath 是的,我放了一个断点来检查,当点击标签时我很好地进入了函数 【参考方案1】:

正如 Kaddath 在 cmets event.stopPropagation 中所建议的那样,标签点击应该停止事件冒泡,因此下拉菜单不应该折叠。

示例代码:

$('#columnsListDropDown li label').click(function(e)
    e.stopPropagation();
)

请参考JSFiddle here。

【讨论】:

以上是关于单击以选中复选框时避免关闭下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

引导下拉菜单在单击时关闭

单击关闭时保持 Bootstrap 下拉菜单打开

在 s-s-rS 报告中使用级联多选下拉菜单时,取消选中所有复选框不起作用

在角度引导 ui 中单击时关闭下拉菜单

在 div 下拉菜单之外单击时隐藏,但未显示切换

如何在按钮单击时切换下拉菜单并在外部单击时关闭?