javascript - querySelectorAll 是否支持 id 中的句点 (.) 字符?

标签 javascript css-selectors selectors-api

querySelectorAll 是否支持 id 中的句点 (.) 字符?

我的意思是如果我附加如下元素:

var div = document.createElement('div');
div.id='my.divid';
document.body.appendChild(div);

然后我像下面这样使用 querySelectorAll:

document.querySelectorAll('#my.divid');

那我什么也得不到!

所以句点是id的合法字符,querySelectorAll是Firefox官方提供的方法;我无法相信该方法不支持 id 中的句点 (.)。我是不是犯了什么错误?

最佳答案

你需要记住 . 代表一个类选择器,所以选择器 #my.divid 代表一个 ID 为 my 的元素, divid 类,不是 ID 为 my.divid 的元素。因此,您的选择器将匹配以下元素:

var div = document.createElement('div');
div.id = 'my';
div.className = 'divid';
document.body.appendChild(div);

如果您需要选择 ID 为 my.divid 的元素,如您上面给出的那样,则需要转义句点:

document.querySelectorAll('#my\\.divid');

请注意,双反斜杠是因为它是 JS 选择器字符串;在 CSS 规则中,您将使用单个反斜杠:#my\.divid

关于javascript - querySelectorAll 是否支持 id 中的句点 (.) 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17563296/

相关文章:

javascript - 使用 select2 的动态选择选项不起作用

c# - 我可以在我的 asp.net 代码中访问 Javascript 数组吗?

javascript - 将 jQuery 选择器转换为 javascript querySelector

javascript - 无法解析 VS 2015 Angular 2 导入模块

javascript - 这个关键字变成错误的this

html - Css 同级 (~) 选择器不适用于选中的属性

html - 关于构建复杂 css 的最优雅方式的想法?

c# - 在 WPF 中打开 ContextMenu 时保留 DataGrid IsSelectionActive?

javascript - 对于在怪异模式父级中运行的标准模式 iframe,document.querySelector 未定义

javascript - querySelectorAll 检测输入中的值