jQuery,p:父选择器返回的元素太多

jQuery,p:父选择器返回的元素太多,jquery,Jquery,我目前正在学习jQueryAPI,特别是:parent选择器 这是我的html和jQuery代码 <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <p id="empty-element">&

我目前正在学习jQueryAPI,特别是
:parent
选择器

这是我的html和jQuery代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="ISO-8859-1">
    <title>Insert title here</title>
  </head>
  <body>
    <p id="empty-element"><p>
    <p id="with-space"> </p>
    <p id="with-text">hello</p>
    <script type="text/javascript" src="../jquery-3.2.1.js"></script>
    <script type="text/javascript">
        var $pElementWhoAreThemselvesParentElement = jQuery('p:parent');
    </script>
  </body>
</html>

在此处插入标题

您好

var$pelementwharethemselvesparentelement=jQuery('p:parent');
我的理解是
p:parent
选择所有本身是父元素的
p
元素

我希望返回带有
id=“with space
id=“with text”
p
元素,但是,从下面的屏幕截图中可以看到,选择器
p:parent
返回了额外的
p
元素


我想知道,为什么会发生这种情况?是我做错了什么,还是我对
:parent
选择器的理解不正确?

这是因为您没有正确关闭第一个
p
标记

<p id="empty-element"><p>


缺少了结束标记,该标记在
DOM
中创建了一个新的
p
元素,这是一个很好的捕获。我在玩这个,有点挠头,没有注意到结束missing@charlietfl我也这么做了:)非常感谢你帮助@Sushanth——:)对OP(@Thor)的一般性评论使用
p:not(:empty)
将是一个更好的选择,因为它将是一个官方选择器,而不是jQuery扩展。@gabykag.Petrioli非常感谢您提供的提示。jQuery确实提到,在可能的情况下,使用本机css选择器更有效。我们肯定会采纳您的建议:)