在今天之前,我认为这两个选择器是相同的,我认为它们执行相同的操作,但今天我遇到了它们行为不同的问题。我想知道这些选择器之间有什么区别。演示
$('.test p:first');
$('.test').find('p:first');
find将为调用它的集合中存在的每个元素执行传递的选择器。所以,看看你的代码:
$('.test p:first')
$('.test p:first')被执行。这将返回一个p元素,它是所有元素中的第一个.test元素。
相对于:
$('.test').find('p:first')
首先$('.test')被执行。这将返回 3 个.test元素(基于小提琴中的 html)。然后find在此集合上调用,并将对这 3 个元素中的每一个执行查找。所以对于每一个 .text它都会找到第一个p。结果是 3 个元素。
差异基于返回的元素,
$('.test').find('p:first')p:first-所有的回报.test。这将返回一个列表并过滤列表中的每个元素。
$('.test p:first')-p:first从所有p匹配的所有返回.test。这将返回列表中的元素和过滤器的单个列表。
我的猜测是$('.test p:first')选择所有元素中的第p一个..test
$('.test').find('p:first')选择每个元素中的p第一个。.test