javascript 按带有“:”(冒号)的属性选择元素

crcmnpdw  于 2023-04-28  发布在  Java
关注(0)|答案(4)|浏览(140)

在我的项目中,有一个库生成元素的情况,我需要从那里选择特定的元素--这些元素碰巧包含一个带有“:”的属性。
换句话说,我最终尝试选择使用:document.querySelectorAll("[xml:space]") .
但是,当在Chrome中测试时,它没有工作,也没有选择使用document.querySelectorAll("['xml:space']")-他们都抛出了DOMException
http://i.imgur.com/GrjpL85.png
我的问题是,如何使上面的选择器返回具有xml:space属性的元素列表?
谢谢!

xqkwcwgp

xqkwcwgp1#

你得从结肠里逃脱

document.querySelectorAll('[xml\\3A space]')

我用https://mothereff.in/css-escapes得到上面的代码:)

lymgl2op

lymgl2op2#

通过在:前面加上双反斜杠\\来转义它

document.querySelectorAll("[xml\\:space]")

看这个:
https://bugzilla.mozilla.org/show_bug.cgi?id=883044

ttcibm8c

ttcibm8c3#

也可以做

document.querySelectorAll('[id="xml:space"]')
qltillow

qltillow4#

比仅针对冒号更强大的解决方案是使用CSS.escape()

const query = CSS.escape("xml:space")    // "xml\\:space"
document.querySelectorAll(`[${query}]`)

请注意,我们将方括号保留在CSS.escape()之外,因为它们不是属性名称的一部分,并且我们希望它们在此选择器中保持其语义含义。

相关问题