当我调用querySelectorAll('#fchildP')
并希望获得它的firstChild节点时,它将返回#text node
,其数据属性为\n
resp "breakline"
,nextSibling是p
元素,是#fchild
的子元素。代码可能有助于理解:
<div id="wrap">
<p id="fchildP">
<p>This is first child of #fchildP</p>
<span id="fchildPchild"></span>
</p>
</div>
JS:
var child = $('#fchildP').child(':first-child'); // returns text endline deliminer
var next = $('#fchildP').next(); // returns p
因此,我调用
querySelectorAll('#fchildP').firstChild
=>返回:文本以结尾的deliminer作为数据,当我调用querySelectorAll('#fchildP').nextSibling
=>时返回:p node
以“这是#fchildP的第一个孩子”作为数据,它是。为什么会这样呢?我怎么能得到#fchildP
而不是元素firstChild
呢?PS:这不是jQuery,而是我自己的库
最佳答案
三件事:
您不能嵌套<p>
元素。嵌套的<p>
元素将在打开新元素之前关闭父元素。使用其他东西。例如<div id="fchildP">
…
使用</div>
代替firstElementChild
获取元素而不是文本节点
用firstChild
从NodeList
…返回的document.querySelectorAll(
中选择第一个元素