You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap 3.4.1 nice-select下拉框选中后无法自动关闭问题求解

解决方案

问题根因

你使用的该版本nice-select插件原生未实现「选中选项后自动关闭下拉框」的逻辑,仅监听了下拉框外部点击的关闭事件,因此出现选中后下拉框不收起的问题。

可选方案

方案1:修改插件源码(一劳永逸)

找到插件代码中.nice-select .option:not(.disabled)的点击事件监听块,在触发原select的change事件后,添加关闭下拉框的逻辑即可。
修改后的对应代码片段如下:

e(document).on("click.nice_select",".nice-select .option:not(.disabled)",function(t){
  var s=e(this),n=s.closest(".nice-select");
  n.find(".selected").removeClass("selected"),s.addClass("selected");
  var i=s.data("display")||s.text();
  n.find(".current").text(i),n.prev("select").val(s.data("value")).trigger("change");
  // 新增以下一行代码即可
  n.removeClass("open");
})

方案2:不修改插件源码,新增自定义事件监听(无侵入,适合不想改动第三方依赖的场景)

直接在你页面的业务JS代码中添加以下代码即可:

// 仅针对当前countryList下拉框
$('#countryList').on('change', function() {
  $(this).next('.nice-select').removeClass('open');
});

// 如果需要适配所有nice-select实例,使用通用选择器即可
// $('select').on('change', function() {
//   $(this).next('.nice-select').removeClass('open');
// });

注意事项

如果你的showChange自定义函数中调用了event.stopPropagation()或者event.preventDefault(),也会阻止事件冒泡导致关闭逻辑失效,可删除对应代码,或在showChange函数末尾手动调用$('#countryList').next('.nice-select').removeClass('open')关闭下拉框。

内容的提问来源于stack exchange,提问作者John Adams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:27:03