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

如何用jQuery实现下拉框选中项隐藏、切换选中时恢复显示?

用jQuery实现下拉列表选中移除、切换恢复的功能

嘿,这个需求我之前也碰到过,用jQuery实现起来其实挺简单的,我给你一步步拆解下~

首先先补全你给出的下拉列表HTML(原来的代码有点不完整):

<dl id='assettypes' class="dropdown">
  <dt>
    <a href="#">
      <span> Select option </span>
    </a>
  </dt>
  <dd>
    <ul id="ggg">
      <li><a href="#">A</a></li>
      <li><a href="#">B</a></li>
      <li><a href="#">C</a></li>
    </ul>
  </dd>
</dl>

接下来是核心的jQuery代码,完全贴合你的需求:

// 存储被移除的列表项和它原来的位置索引
let removedLi = null;
let removedIndex = 0;

// 给下拉列表里的所有选项绑定点击事件
$('#ggg li a').on('click', function(e) {
  // 阻止<a>标签的默认跳转行为
  e.preventDefault();
  
  // 获取当前点击的<li>元素,以及它在列表中的位置
  const currentLi = $(this).parent();
  const currentIndex = $('#ggg li').index(currentLi);

  // 如果之前已经移除过某个选项,先把它恢复回列表的原位置
  if (removedLi) {
    const targetLi = $('#ggg li').eq(removedIndex);
    if (targetLi.length) {
      // 原位置还有元素,就插在它前面
      targetLi.before(removedLi);
    } else {
      // 原位置已经没有元素(比如之前移除的是最后一项),就追加到末尾
      $('#ggg').append(removedLi);
    }
    // 清空存储的移除项和索引
    removedLi = null;
  }

  // 存储当前选中项的位置和元素,然后从列表中移除它
  removedIndex = currentIndex;
  removedLi = currentLi.detach(); // 用detach()保留元素的事件和数据,方便后续恢复

  // 可选:更新下拉按钮的显示文本,让用户直观看到选中的选项
  $('#assettypes dt span').text($(this).text());
});

代码逻辑解释:

这样就完全实现了你要的效果:选中“A”时移除“A”,选中“B”时把“A”恢复到列表中同时移除“B”,以此类推。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:20:50