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

如何在清除Chosen.js搜索结果时销毁mCustomScrollbar?

解决Chosen.js搜索结果清除时销毁mCustomScrollbar的问题

嘿,我看你已经在尝试结合Chosen.js和mCustomScrollbar了,思路挺靠谱的——在下拉隐藏时销毁滚动条,但要精准针对搜索结果清除这个场景,咱们得调整事件监听的时机,毕竟chosen:hiding_dropdown只有下拉面板关闭时才触发,而清空搜索框、清除搜索结果是在下拉面板打开时发生的呀。

下面是优化后的代码方案,能完美覆盖你要的场景:

$(function() {
  // 初始化Chosen组件
  $('select.select').chosen({
    disable_search_threshold: 5,
    width: '50%'
  });

  // 下拉面板显示时初始化滚动条
  $('select.select').on('chosen:showing_dropdown', function() {
    const $visibleResults = $('.chosen-results:visible');
    // 避免重复初始化
    if (!$visibleResults.data('mCustomScrollbar')) {
      $visibleResults.mCustomScrollbar({
        theme: 'minimal-dark',
        autoHideScrollbar: false
      });
    }
  });

  // 监听Chosen的搜索事件,精准处理搜索结果清除场景
  $('select.select').on('chosen:search', function(e, params) {
    const $results = $('.chosen-results:visible');
    // 当搜索关键词为空时,说明是清除了搜索结果
    if (!params.search.length) {
      // 先检查滚动条是否已初始化,避免报错
      if ($results.data('mCustomScrollbar')) {
        $results.mCustomScrollbar('destroy');
      }
    } else {
      // 如果有搜索内容,滚动条没初始化的话就重新加上
      if (!$results.data('mCustomScrollbar')) {
        $results.mCustomScrollbar({
          theme: 'minimal-dark',
          autoHideScrollbar: false
        });
      }
    }
  });

  // 下拉面板隐藏时销毁滚动条,保留这个兜底逻辑
  $('select.select').on('chosen:hiding_dropdown', function() {
    const $results = $(".chosen-results");
    if ($results.length && $results.data('mCustomScrollbar')) {
      $results.mCustomScrollbar('destroy');
    }
  });
});

几个关键的改进点:

  • 新增chosen:search事件监听:这个事件会在用户输入搜索关键词(包括清空内容)时触发,通过params.search就能拿到当前的搜索文本,轻松判断是否是“清除搜索结果”的场景。
  • 增加滚动条存在性检查:用data('mCustomScrollbar')判断滚动条是否已经初始化,避免重复调用destroy或init导致控制台报错。
  • 保留原有的兜底逻辑:chosen:hiding_dropdown的销毁逻辑还是留着,确保下拉面板关闭时滚动条能被正确清理。

你的CSS样式可以保持不变:

.chosen-drop .chosen-results {
  max-height: 100px !important;
}

这样调整后,不管是用户清空搜索框清除结果,还是关闭下拉面板,滚动条都能被及时销毁或按需初始化,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:35:53