【8】jQuery学习——入门jQuery选择器之过滤选择器-子元素过滤选择器

这次我们来学习下-子元素过滤器,看了下其他网站的实例都是用ul做例子,不知道这个子元素过滤是不是同样适合ol、dl这样的列表型的标签,还是其他的标签也行,这个子元素要怎么来算呢?谁来说说?

好了,也不纠结了,下面来看看这4个子元素过滤器吧。

选择器描述返回
$("Element:nth-child(index/even/odd/equation)")选取每个父元素下的第index个子元素或者奇偶元素集合元素
$("Element:first-child")选取每个父元素的第一个子元素集合元素
$("Element:last-child")选取每个父元素的最后一个子元素集合元素
$("Element:only-child")如果某个元素是它父元素中唯一的子元素,那么将会被匹配。如果父元素中含有其他元素,则不会被匹配集合元素

下面分别来说下这4个选择器

=============================================================================

:nth-child() 过滤选择器的功能如下:

选择每个父级下的第N(index)个子级元素或者奇偶元素,(index)索引从1开始,而eq函数(eq函数会在后面学习到)从0开始,只匹配一个元素。

┣━:nth-child(2)索引: 选取每个父元素下的索引值为2的元素

┣━:nth-child(even)偶数: 由于index是从1开始的,所以这里取得的索引值为偶数的元素,实际上就是我们正常的偶数了

┣━:nth-child(odd)奇数: 由于index是从1开始的,所以这里取得的索引值为奇数的元素,实际上就是我们正常的奇数了

┣━:nth-child(3n)表达式: 选取每个父元素下的索引值为3的倍数的元素,(n从0开始)

┣━:nth-child(3n+1)表达式:选取每个父元素下的索引值为(3n+1)的元素,(n从0开始)

┗━:nth-child(3n+2)表达式:能选取每个父元素下的索引值为(3n+2)的元素,(n从0开始)

jQuery在实现:nth-child(n)是严格来自CSS规范,而不是遵循JavaScript的“0索引”的计数,所以从1开始计数;

对于表达式n为什么会从0开始呢?自己带0算算就知道了:nth-child(3n)=:nth-child(3*0)=:nth-child(0),这样算下,还真是获取不到元素的,然后大家就应该能明白了为什么要从0开始了。

==============================================================================

:first-child 过滤选择器的功能如下:

:first-child选择符将为每个父元素匹配第1个子元素。例如$("ul li:first-child")选取的是每个<ul>中第1个<li>

:first只返回单个元素

==============================================================================

:last-child 过滤选择器的功能如下:

:last-child选择符将为每个父元素匹配第1个子元素。例如$("ul li:last-child")选取的是每个<ul>中最后1个<li>

:last只返回单个元素

==============================================================================

:only-child 过滤选择器的功能如下:

这个要给个列子说明下才行

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>
<ul>
  <li>one</li>
</ul>

jQuery获取代码:

$("ul li:only-child")

结果是:<li>one</li>,因为这个ul下只有他一个li,而它上面那个ul有3个li,不具有唯一子元素。

==============================================================================

ps.文章参考梦三秋和w3cfuns网站