【发布时间】:2013-02-04 16:28:17
【问题描述】:
我的页面可能是以下之一:
<span id='size'>33</span>
或者
<span id='size'>
<b>33</b>
<strike>32</strike>
</span>
我想在这两种情况下都获取值“33”,有没有我可以使用的 CSS 选择器? 我尝试使用以下,没有 b 兄弟的 #size 或 #size 兄弟的 b:
document.querySelector('#size:not(>b), #size>b').innerText
但我不断收到错误消息-“错误:SYNTAX_ERR:DOM Exception 12”
根据w3 Spec,仅支持Simple Selectors,问题是“大于号”(U+003E,>)”被视为Simple Selectors定义的一部分。
【问题讨论】:
-
你得到什么样的错误?
-
第一个标签示例没有正确关闭:它以
<span>开头并以</a>结束。 -
在CSS级别4和父选择器之前恐怕没有纯CSS的解决方案...
-
对于那些可以使用 jQuery 的人,
$('#size:not(:has(b)), #size:has(b)')应该按照this question 工作。 -
@Blender 这也将选择第二个示例的整个 span 元素,这(我猜)不是 OP 想要的。不过不确定。
标签: css css-selectors