Javascript 找到每个div的第一段

Javascript 找到每个div的第一段,javascript,jquery,html,Javascript,Jquery,Html,我试图在.index 但他们似乎只得到了文档中的第一段,而不是每一篇文章的第一段 是否有人知道解决方案,并解释为什么这不起作用? 找到与.index.post匹配的所有元素,并为每个元素找到第一段并附加到其上: $('.index .post').each( function(){ $( 'p:first', this ).append( '...' ); } ); 具有单个选择器的版本为: $('.index .post p:first-child').append('...');

我试图在
.index

但他们似乎只得到了文档中的第一段,而不是每一篇文章的第一段

是否有人知道解决方案,并解释为什么这不起作用?

找到与
.index.post
匹配的所有元素,并为每个元素找到第一段并附加到其上:

$('.index .post').each( function(){
    $( 'p:first', this ).append( '...' );
} );
具有单个选择器的版本为:

$('.index .post p:first-child').append('...');
  • 伪类只匹配单个元素(DOM层次结构中的第一个元素)
  • 为其每个父级查找第一个匹配项

找到与
.index.post
匹配的所有元素,并为每个元素找到第一段并附加到其上:

$('.index .post').each( function(){
    $( 'p:first', this ).append( '...' );
} );
具有单个选择器的版本为:

$('.index .post p:first-child').append('...');
  • 伪类只匹配单个元素(DOM层次结构中的第一个元素)
  • 为其每个父级查找第一个匹配项

您需要使用
:first child
而不是
:first

$('.index .post p:first-child').each(function () {
    $(this).append('...');
});
仅匹配单个元素,选择器可以匹配多个元素:每个父元素一个


您需要使用
:first child
而不是
:first

$('.index .post p:first-child').each(function () {
    $(this).append('...');
});
仅匹配单个元素,选择器可以匹配多个元素:每个父元素一个


我会尝试以下方法:

$('.index .post').each(function(){
    $(this).find('p:first').append('my text to append');
});

我想尝试一下:

$('.index .post').each(function(){
    $(this).find('p:first').append('my text to append');
});

我的答案是@Sachin提供的答案的变体

您应该使用类型伪类的
:first。这样,即使
.post
的第一个子元素是
,它仍然会选择第一个
元素

$('.index .post p:first-of-type').each(function () {
    $(this).append('...');
});
这是一个有效的演示:


阅读更多关于CSS技巧的信息。

我的答案是@Sachin提供的答案的变体

您应该使用类型
伪类的
:first。这样,即使
.post
的第一个子元素是
,它仍然会选择第一个
元素

$('.index .post p:first-of-type').each(function () {
    $(this).append('...');
});
这是一个有效的演示:


阅读更多关于CSS技巧的信息。

如果您尝试在控制台中通过jquery进行选择,您将看到返回的数组中只有第一段,因为您正在过滤它。 你可以这样做,我认为它更具可读性。你做了一个全面的分析,每一篇文章你都会找到第一段并附加“…”

$('.index .post').each(function(){
   $(this).find('p:first').append('...');
})

如果您尝试在控制台中通过jquery进行选择,您将看到返回的数组中只有第一段,因为您正在筛选它。 你可以这样做,我认为它更具可读性。你做了一个全面的分析,每一篇文章你都会找到第一段并附加“…”

$('.index .post').each(function(){
   $(this).find('p:first').append('...');
})

:第一只会得到第一只。您需要每个的第一个子项。
$('.index.post p:first child')
如@KevinB所说,使用。
$('.index.post p:first of type')
是最好的。看我的答案:第一只会得到第一只。您需要每个的第一个子项。
$('.index.post p:first child')
如@KevinB所说,使用。
$('.index.post p:first of type')
是最好的。看看我的答案。谢谢。它们之间有什么区别?@tmyie First将选择集合中的第一个元素。第一个孩子将通过选择第一个孩子进行收集。谢谢。它们之间有什么区别?@tmyie First将选择集合中的第一个元素。第一个孩子将通过选择第一个孩子进行收集。谢谢。
$('p:first',this)
和`$('.index.post p:first')之间有什么区别?伪类将只匹配单个元素(第一个要匹配的元素)。因此
'.index.post p:first'
将查找与选择器
'.index.post p'
匹配的第一个元素,而不管有多少匹配项
.index.post
可以匹配多个元素,然后您可以在每个匹配中查找
:第一个
段落元素。谢谢。
$('p:first',this)
和`$('.index.post p:first')之间有什么区别?伪类将只匹配单个元素(第一个要匹配的元素)。因此
'.index.post p:first'
将查找与选择器
'.index.post p'
匹配的第一个元素,而不管有多少匹配项
.index.post
可以匹配多个元素,然后可以在每个匹配中查找
:第一个
段落元素。