查询选择器,通配符元素匹配?

2022-08-30 00:48:26

有没有办法使用 或 执行通配符元素名称匹配?querySelectorquerySelectorAll

我试图解析的XML文档基本上是一个扁平的属性列表。

  • 我需要找到名称中包含某些字符串的元素。
  • 我看到在属性查询中支持通配符,但对元素本身不支持。

除了回到使用明显不推荐使用的XPath(IE9放弃了它)之外,任何解决方案都是可以接受的。


答案 1

[id^='someId']将匹配所有以 开头的 ID。someId

[id$='someId']将匹配所有以 结尾的 id。someId

[id*='someId']将匹配包含 的所有 ID。someId

如果您要查找该属性,只需替换为 .nameidname

如果你正在谈论元素的标签名称,我不相信有办法使用querySelector


答案 2

我正在混乱/思考涉及querySelector()的单行,并最终在这里结束,并且使用标签名称和querySelector()对OP问题有一个可能的答案,并@JaredMcAteer用于回答我的问题的学分,即在vanilla Javascript中与querySelector()进行类似正则表达式的匹配

希望以下内容有用并符合OP或其他所有人的需求:

// basically, of before:
var youtubeDiv = document.querySelector('iframe[src="http://www.youtube.com/embed/Jk5lTqQzoKA"]')

// after     
var youtubeDiv = document.querySelector('iframe[src^="http://www.youtube.com"]');
// or even, for my needs
var youtubeDiv = document.querySelector('iframe[src*="youtube"]');

然后,我们可以,例如,获得src的东西,等等...

console.log(youtubeDiv.src);
//> "http://www.youtube.com/embed/Jk5lTqQzoKA"
console.debug(youtubeDiv);
//> (...)