使用jQuery 3.7.1的:first:is选择器为何报“unsupported pseudo: is”错误?
报错原因分析
这个报错的核心原因是选择器语法不符合jQuery的解析规则,具体问题如下:
:is()伪类的使用格式错误
你将jQuery原生伪类:first与CSS伪类:is()直接链式拼接,这种写法不被jQuery的选择器解析逻辑支持。虽然jQuery 3.4.0及以上版本支持CSS的:is()伪类,但不能将其作为后缀伪类直接跟在:first之后,这种组合会被判定为无效伪类,从而抛出"unsupported pseudo: is"错误。选择器逻辑顺序混乱
你的选择器试图实现“找到第一个值为空的日期输入框”,但当前写法会先选取匹配到的第一个日期输入框,再用:is()判断其值是否为空,这和预期逻辑不符,同时语法上也违反了jQuery的选择器规范。额外提示:
[value='']选择器的局限性
即使修复语法,[value='']只能匹配HTML属性中初始值为空的输入框,当用户手动清空输入框后,DOM的动态value值不会同步到HTML属性节点,此时该选择器无法识别这类动态清空的输入框,建议用.filter()方法判断元素的实时value值。
修复方案示例
如果要实现目标需求,可改用以下清晰写法:
// 方案1:先筛选所有日期输入框,过滤空值后取第一个 $('#the_form').find("input[type='date'][name='the_date[]']").filter(function() { return this.value === ''; }).first(); // 方案2:使用正确的:is()语法(调整伪类顺序) $('#the_form').find("input[type='date'][name='the_date[]']:is([value=''])").first();
内容的提问来源于stack exchange,提问作者Giacomo1968
相关产品推荐
相关产品推荐

