Spec-Zone.ru › jQuery

:nth-child() Селектор

Селектор nth-child

Описание: Выбирает все элементы, являющиеся n-м дочерним элементом своего родителя.

  • версия добавлена: 1.1.4jQuery( ":nth-child(index/even/odd/equation)" )

    индекс: Индекс каждого дочернего элемента для соответствия, начиная с 1, строки even или odd, или уравнения (например, :nth-child(even), :nth-child(4n) )

Поскольку реализация jQuery селекторов :nth- строго основана на спецификации CSS, значение n является "индексированным с 1", что означает, что подсчёт начинается с 1. Методы jQuery, такие как .first() или .eq(), следуют JavaScript-овскому подсчёту с индексацией с 0. Если у вас есть один <ul> содержащий два <li>ы, $( "li:nth-child(1)" ) выбирает первый <li>, а $( "li" ).eq( 1 ) выбирает второй.

Псевдокласс :nth-child(n) легко перепутать с вызовом .eq( n ), хотя два могут привести к значительно отличающимся сопоставленным элементам. С :nth-child(n), все дочерние элементы подсчитываются, независимо от того, чем они являются, и указанный элемент выбирается только в том случае, если он соответствует селектору, присоединённому к псевдоклассу. С вызовом .eq( n ) подсчитывается только селектор, присоединённый к псевдоклассу, не ограничиваясь дочерними элементами любого другого элемента, и выбирается (n+1)-й (n нулево-индексированный).

Дополнительные обсуждения этого необычного использования можно найти в спецификации CSS W3C.

Примеры:

Найдите второй li в каждом сопоставленном ul и отметьте его.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>nth-child demo</title>
  <style>
  div {
    float: left;
  }
  span {
    color: blue;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<div>
  <ul>
    <li>John</li>
    <li>Karl</li>
    <li>Brandon</li>
  </ul>
</div>
<div>
  <ul>
    <li>Sam</li>
  </ul>
</div>
<div>
  <ul>
    <li>Glen</li>
    <li>Tane</li>
    <li>Ralph</li>
    <li>David</li>
  </ul>
</div>
 
<script>
$( "ul li:nth-child(2)" ).append( "<span> - 2nd!</span>" );
</script>
 
</body>
</html>

Демо:

Это площадка, чтобы увидеть, как селектор работает с разными строками. Обратите внимание, что это отличается от even и odd, которые не учитывают родителя и просто фильтруют список элементов каждым другим. :nth-child, однако, подсчитывает индекс дочернего элемента к его конкретному родителю. В любом случае, это проще увидеть, чем объяснить, так что...

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>nth-child demo</title>
  <style>
  button {
    display: block;
    font-size: 12px;
    width: 100px;
  }
  div {
    float: left;
    margin: 10px;
    font-size: 10px;
    border: 1px solid black;
  }
  span {
    color: blue;
    font-size: 18px;
  }
  #inner {
    color: red;
  }
  td {
    width: 50px;
    text-align: center;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<div>
  <button>:nth-child(even)</button>
  <button>:nth-child(odd)</button>
  <button>:nth-child(3n)</button>
  <button>:nth-child(2)</button>
</div>
<div>
  <button>:nth-child(3n+1)</button>
  <button>:nth-child(3n+2)</button>
  <button data-method="even">.even()</button>
  <button data-method="odd">.odd()</button>
</div>
 
<div>
  <table>
    <tr><td>John</td></tr>
    <tr><td>Karl</td></tr>
    <tr><td>Brandon</td></tr>
    <tr><td>Benjamin</td></tr>
  </table>
</div>
<div>
  <table>
    <tr><td>Sam</td></tr>
  </table>
</div>
<div>
  <table>
    <tr><td>Glen</td></tr>
    <tr><td>Tane</td></tr>
    <tr><td>Ralph</td></tr>
    <tr><td>David</td></tr>
    <tr><td>Mike</td></tr>
    <tr><td>Dan</td></tr>
  </table>
</div>
 
<span>tr<span id="inner"></span></span>
 
<script>
$( "button" ).on( "click", function() {
  var str = $( this ).text();
  var method = $( this ).attr( "data-method" );
  $( "tr" ).css( "background", "white" );
  if ( method ) {
    $( "tr" )[ method ]().css( "background", "#ff0000" );
  } else {
    $( "tr" + str ).css( "background", "#ff0000" );
  }
  $( "#inner" ).text( str );
});
</script>
 
</body>
</html>

Демо:

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/nth-child-selector

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API