querySelector:scope为null

时间:2018-02-27 16:07:25

标签: javascript css-selectors

我正在尝试选择当前元素的兄弟,但是当我在元素上使用a.querySelector(':scope')时,它为null。当我尝试将同级选择器添加到:scope时,它仍为空,但如果我在.matches(':scope')中使用它,则返回true。如何在选择器中使用当前元素?



let a = document.querySelector('div > a')
console.log(a.querySelector(':scope'))
console.log(a.querySelector(':scope + span'))
console.log(a.matches(':scope'))

<div>
  <a href=""></a>
  <span></span>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

querySelector选择上下文元素的后代

元素本身不会是它自己的后代,也不会是它的任何兄弟姐妹。

如果您要定位后代,则可以使用:scope

例如,要仅搜索子项而不搜索更深层次的后代,可以将:scope与子组合子一起使用。

let a = document.querySelector('#foo')
console.log(a.querySelector(':scope > span'))
<div id="foo">
 <div><span>2</span></div>
 <span>1</span>
</div>