当我调用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获取元素而不是文本节点
firstChildNodeList…返回的document.querySelectorAll(中选择第一个元素

08-08 08:57