JQuery 没有看到第一个 <p> 但为什么呢?

JQuery doesn't see the first <p> but why?

我正在使用 $.parseHTML():

将字符串转换为 HTML DOM 对象
var html = $.parseHTML('\
    <div class="row podcast">\
    <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8 podcast_info">\
    <h4></h4>\
    <p></p>\
    <p></p>\

剩下的不是很重要,就是那两个<p>让我很烦。还有几十个 div 之类的东西,它以 '); 结尾。在大约三十行之后。 HTML 代码很可靠,所以我没有 post 全部放在这里。

出于某些奇怪的原因,这些引用:

$('.podcast_info').find('p:first')
$('.podcast_info').find('p:nth-child(1)')

全部return未定义。第一个 <p>,紧接在 <h4> 之后的 jQuery。他们回应 nth-child(2),下一个回应 nth-child(3)

这是为什么?在他们之前的区块中没有其他 <p>。即使我向控制台输出 p:first,它 return 也是未定义的。怎么样?

JQuery 版本为 2.2.4.

为什么 p:first-childp:nth-child(1) 不起作用?

这是因为,p而不是first-child,而h4是。您可能需要:

$("p").first();

所以尝试:

$('.podcast_info').find('p').first();
$('.podcast_info').find('p:nth-of-type(1)');

片段

$(function () {
  console.log($('.podcast_info').find('p').first().length);
  console.log($('.podcast_info').find('p:nth-of-type(1)').length);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row podcast">
  <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8 podcast_info">
    <h4></h4>
    <p></p>
    <p></p>
  </div>
</div>