选择指定ID前缀下拉框排除label,现有jQuery选择器能否简化?
jQuery选择器简化方案
你的原有选择器存在大量重复逻辑,完全可以大幅简化,以下是不同场景的最优写法:
最简通用写法
如果你能确认所有GG0130开头且带_Admission前缀的非label元素都是你需要的目标,直接合并公共匹配规则即可,该写法和你原有选择器的匹配逻辑完全等价:
$('[id^="GG0130"][id*="_Admission"]:not(label)').each(function () { // 原有业务逻辑 })
更精准高效的写法
因为你的需求是选中下拉框元素,直接限定元素类型为select即可,连排除label的逻辑都可以省略,匹配效率也远高于属性匹配后再排除标签的写法:
$('select[id^="GG0130"][id*="_Admission"]').each(function () { // 原有业务逻辑 })
严格限定后缀范围的写法
如果页面中存在其他GG0130开头带_Admission但不属于A-H后缀的元素,可以加一层filter做正则校验,确保只匹配A到H的后缀规则:
$('[id^="GG0130"]') .filter(function() { return /^GG0130[A-H]_Admission/.test(this.id) }) .not('label') .each(function () { // 原有业务逻辑 })
内容的提问来源于stack exchange,提问作者user266909
相关产品推荐
相关产品推荐

