4

在今天之前,我认为这两个选择器是相同的,我认为它们执行相同的操作,但今天我遇到了它们行为不同的问题。我想知道这些选择器之间有什么区别。演示

$('.test p:first');

$('.test').find('p:first');
4

3 回答 3

4

find将为调用它的集合中存在的每个元素执行传递的选择器。所以,看看你的代码:

$('.test p:first')

$('.test p:first')被执行。这将返回一个p元素,它是所有元素中的第一个.test元素。

相对于:

$('.test').find('p:first')

首先$('.test')被执行。这将返回 3 个.test元素(基于小提琴中的 html)。然后find在此集合上调用,并将对这 3 个元素中的每一个执行查找。所以对于每一个 .text它都会找到第一个p。结果是 3 个元素。

于 2013-11-12T18:57:48.130 回答
2

差异基于返回的元素,

$('.test').find('p:first')p:first-所有的回报.test。这将返回一个列表并过滤列表中的每个元素。

$('.test p:first')-p:first从所有p匹配的所有返回.test。这将返回列表中的元素和过滤器的单个列表。

于 2013-11-12T18:54:36.533 回答
1

我的猜测是$('.test p:first')选择所有元素中的第p一个..test

$('.test').find('p:first')选择每个元素中的p第一个。.test

于 2013-11-12T18:54:43.113 回答