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

为什么'.tab-content[data-tab=1]'在原生JS中不是合法选择器但jQuery中可用?

问题原因说明

这个差异是原生选择器的严格规范校验和jQuery选择器引擎的额外容错机制导致的,具体规则如下:

  • CSS官方规范中,属性选择器的属性值只有是合法CSS标识符时才能省略引号。CSS标识符的要求是:只能由字母、数字、下划线、连字符组成,且不能以数字、「连字符+数字」开头。
    你代码里的属性值1是纯数字,不符合CSS标识符的定义,所以必须用单/双引号包裹才属于合法选择器,原生querySelector严格遵循W3C规范做合法性校验,不符合要求的选择器会直接抛出DOMException错误。
  • 你查阅到的[target=_blank]示例是合法可省略引号的场景:_blank以下划线开头,属于符合要求的CSS标识符,就算不加引号原生querySelector也可以正常识别。
  • jQuery可以正常运行的原因是其内置的Sizzle选择器引擎没有完全严格执行CSS规范的校验逻辑,针对纯数字属性值这类常见的不规范写法做了兼容适配,自动完成了识别转换,所以不需要加引号也能正常匹配到元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:36:03