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

当option使用disabled="disabled"属性时,如何用jQuery选择未禁用的option

解决jQuery选择器无法匹配disabled="disabled"的option问题

哦,这个坑我之前踩过!其实HTML里的disabled是布尔属性,不管你写disabled还是disabled="disabled",浏览器都应该把这个option标记为禁用,但有时候jQuery的:disabled伪类选择器在某些场景下(比如旧版本jQuery或者特定浏览器解析差异)会对完整写法的属性匹配失效。

给你两个可靠的解决方案:

方案1:使用属性排除选择器(最通用)

直接通过属性存在性来排除,不管属性值是什么,只要有disabled属性就排除:

jQuery('select option:not([disabled])')

这个写法能覆盖所有禁用情况——不管是disabled、disabled="disabled"还是disabled="",都能准确筛选出未被禁用的option。

方案2:精确匹配属性值(针对特定场景)

如果你确定所有禁用的option都用disabled="disabled"写法,也可以直接匹配属性值来排除:

jQuery('select option:not([disabled="disabled"])')

不过方案1的通用性更强,更推荐使用。

测试示例

你可以用这段代码验证效果:

<select>
  <option value="test1" disabled>Test 1 (仅写disabled)</option>
  <option value="test2" disabled="disabled">Test 2 (disabled="disabled")</option>
  <option value="test3">Test 3 (未禁用)</option>
</select>
<script>
// 选中未禁用的option并标绿
$('select option:not([disabled])').css('color', 'darkgreen');
</script>

另外,如果你的jQuery版本非常老旧(比如1.6之前),建议升级到稳定版本,新版本对布尔属性的处理更完善,但上面的属性选择器写法在新旧版本都能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:32:35