加载中...

:nth-of-type()1.9+


概述    nth-of-type selector

返回值:jQuery

描述:选择同属于一个父元素之下,并且标签名相同的子元素中的第n个。

  • V : 1.9jQuery( ":nth-of-type(index/even/odd/equation)" )

    index: 每个相匹配子元素的索引值,从1开始,也可以是字符串 evenodd,或一个方程式( 例如 :nth-of-type(even), :nth-of-type(4n))。

因为jQuery的实现:nth-是严格来自CSS规范,n值是“1-indexed”,也就是说,从1开始计数。对于所有其他选择器表达式比如:eq():even ,jQuery遵循JavaScript的“0索引”的计数。

这个不寻常的用法,可进一步讨论中找到W3C CSS specification.

:nth-of-type()选择器是jQuery 1.9新增的选择器,它是遵循CSS 3中结构性伪类选择符 E:nth-of-type(n)实现的。和CSS 3中结构性伪类选择符 E:nth-of-type(n)一样,它选择的是匹配所有父元素下同类型中的第n个同级兄弟元素E。

:nth-of-type()选择器和 :nth-child()选择器很容易混淆,至少我是这么认为的。看下面一个示例:

  1. <div class="test">
  2.  
  3. <p>A元素</p>
  4.  
  5. <div>B元素</div>
  6.  
  7. <p>C元素</p>
  8.  
  9. <p>D元素</p>
  10.  
  11. </div>

看下面的代码

  1. $("p:nth-of-type(2)")//选择的是C元素
  2.  
  3. $("p:nth-child(2)")//什么元素也没选中

两者比较:

  • 这里p:nth-of-type(2)选择器选择父元素的第二个段落p元素 ,它不管段落p元素在什么位置,段落p元素可能是该父级元素的第3个或者第5个,也可以是第n个子元素,这里n肯定大于2,只要父级元素<div class="test">有两个以上的段落p子元素,他就肯定能选择到第二个段落p元素。
  • 这里p:nth-child(2)选择器选择不到任何元素,p:nth-child(2)选择器要满足的条件是:
    • 1、是一个段落p元素;
    • 2、是父元素的第二个子元素
    上述的HTML结构中,<div class="test">的第二个子元素是div元素,而不是p元素,所以不满足条件,这样就选择不到任何元素

示例

查找每个span,这个 span 是 其所有兄弟span元素中的第二个元素。

  1. <div>
  2. <span>John</span>
  3. <b>Kim</b>
  4. <span>Adam</span>
  5. <b>Rafael</b>
  6. <span>Oleg</span>
  7. </div>
  8. <div>
  9. <b>Dave</b>
  10. <span>Ann</span>
  11. </div>
  12. <div>
  13. <i><span>Maurice</span></i>
  14. <span>Richard</span>
  15. <span>Ralph</span>
  16. <span>Jason</span>
  17. </div>
  18.  
  19. $("span:nth-of-type(2)");

实例

查找每个span,这个 span 是 其所有兄弟span元素中的第二个元素。

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>nth-of-type demo</title>
  6. <style>
  7. .nth {
  8. color: red;
  9. }
  10. </style>
  11. <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
  12. </head>
  13. <body>
  14. <div>
  15. <span>John</span>,
  16. <b>Kim</b>,
  17. <span>Adam</span>,
  18. <b>Rafael</b>,
  19. <span>Oleg</span>
  20. </div>
  21. <div>
  22. <b>Dave</b>,
  23. <span>Ann</span>
  24. </div>
  25. <div>
  26. <i><span>Maurice</span></i>,
  27. <span>Richard</span>,
  28. <span>Ralph</span>,
  29. <span>Jason</span>
  30. </div>
  31. <script>
  32. $( "span:nth-of-type(2)" )
  33. .append( "<span> is 2nd sibling span</span>" )
  34. .addClass( "nth" );
  35. </script>
  36. </body>
  37. </html>
运行一下


还没有评论.