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

jQuery选择器失效,如何排除首项与选中项获取目标值?

问题分析与解决方案

咱们先拆解下你当前代码的问题:你写的选择器option:not(:first:selected)逻辑是错的——它的意思是排除「既是第一个选项又是被选中的」元素,但你的第一个选项根本没被选中,所以这个选择器其实匹配了所有选项。而val()方法对于多个匹配的option元素,只会返回第一个匹配项的value,也就是1,这自然达不到你“不显示值1和已选中选项值”的预期。

针对你的需求,我给你两种解决方案,你可以根据实际场景选择:

方案1:排除第一个选项 + 排除已选中选项

如果你想直接排除第一个选项(不管它的value是什么),同时排除所有已选中的选项,可以用双重:not()筛选:

// 收集所有符合条件的选项值,转为普通数组
const targetValues = $('select[name="Units[]"] option:not(:first):not(:selected)')
  .map(function() {
    return $(this).val();
  })
  .get();

console.log(targetValues);

方案2:排除指定value的选项 + 排除已选中选项

如果你想精准排除value为1的选项(不管它是不是第一个),同时排除已选中的选项,可以用属性选择器配合:not():

const targetValues = $('select[name="Units[]"] option:not([value="1"]):not(:selected)')
  .map(function() {
    return $(this).val();
  })
  .get();

console.log(targetValues);

为什么这样写能解决问题?

  1. 双重:not()分别排除两类你不想显示的选项,精准筛选出你需要的目标元素;
  2. 使用.map()遍历所有匹配的选项,收集它们的value值,再用.get()把jQuery对象转换为普通数组,这样就能输出所有符合条件的值(而不是单个值)。

结合你提供的示例代码,当前没有符合条件的选项(第一个是value1,剩下的都被选中了),所以控制台会输出空数组[],完全符合你“不显示值1和已选中选项值”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:34:19