:first是选择将所有的父元素合并之后的第一个子元素;:first-child是选择每个父元素的第一个子元素
<ul>
<li>John</li>
<li>Karl</li>
<li>Brandon</li>
</ul>
<ul>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>
$('ul li:first') 返回john所在的li。 查找所有ul下第一个li元素
$("ul li:first-child") 返回 john glen。 查找每个ul下第一个元素是li元素dom元素。
扩展用法:$("body *:first")表示body下的第一个孩子元素; $("body *:first-child")表示body下的每一个是第一个孩子元素的元素
另外,在匹配规则方面也有区别
<ul>
<div>DIV</div>
<li>Glen</li>
<li>Tane</li>
<li>Ralph</li>
</ul>
在这种情况下$(ul li:first)选中的是Glen,而$(ul li:first-child)则没有选中任何元素,因为<ul>的第一个子元素是div。