jQuery różnica między:eq () i: nth-child()

W jQuery, jakie są najważniejsze różnice między używaniem :eq () i: nth-child () do zaznaczania dowolnych elementów ?

Również ogólnie, dla indeksu początkowego, w którym to przypadku zaczyna się od "0", a kiedy zaczyna się od "1" ?

Author: testndtv, 2011-08-12

7 answers

:eq()

Wybierz element o indeksie n w dopasowanym zestawie.

Selektory powiązane z indeksami (:eq(), :lt(), :gt(), :even, :odd) filtrują zestaw elementów, które pasują do wyrażeń, które je poprzedzają. Zawężają zestaw w oparciu o kolejność elementów w tym dopasowanym zestawie. Na przykład, jeśli elementy są najpierw wybierane za pomocą selektora klas (.myclass) i zwracane są cztery elementy, elementy te otrzymują indeksy od 0 do 3 dla cele tych selektorów.

:nth-dziecko()

Wybiera wszystkie elementy, które są N-tym dzieckiem ich rodzica.

Ponieważ implementacja jQuery: nth-child (n) jest ściśle pochodną specyfikacji CSS, wartość n jest "1-indeksowana", co oznacza, że liczenie zaczyna się od 1. Jednak dla wszystkich innych wyrażeń selektora, jQuery podąża za JavaScript "0-indeksowane" liczenia. Dlatego, biorąc pod uwagę pojedynczy zawierający dwa <li> s, $('li:nth-child(1)') wybiera pierwszy <li> podczas gdy $('li:eq(1)') wybiera drugi.

Pseudoklasa :nth-child(n) jest łatwo mylona z :eq(n), nawet jeśli te dwa elementy mogą powodować dramatycznie różne dopasowane elementy. Z :nth-child( n), wszystkie dzieci są liczone, niezależnie od tego, czym są, A określony element jest wybierany tylko wtedy, gdy pasuje do selektora dołączonego do pseudo-klasy. Z :eq (n) liczony jest tylko selektor dołączony do pseudo-klasy, nie ograniczający się do dzieci jakiegokolwiek innego elementu, a (n+1)th jeden (N jest oparte na 0) jest wybrany.

Pseudoklasa :NTH-child(an+B) reprezentuje element, który ma rodzeństwo+b-1 przed nim w drzewie dokumentu, dla dowolnej dodatniej liczby całkowitej lub zerowej wartości n i ma element nadrzędny. Dla wartości a i b większych od zera, to skutecznie dzieli Potomków elementu na grupy elementów a (ostatnia grupa biorąca resztę), i wybierając element BTH z każdej grupy. Na przykład, pozwala to selektorom adresować co drugi wiersz tabeli i może być używany do zmiany koloru tekstu akapitu w cyklu czterech. Wartości a i b muszą być liczbami całkowitymi (dodatni, ujemny lub zerowy). Indeks pierwszego potomka elementu wynosi 1.

Oprócz tego,: nth-child() może zamiast tego przyjmować 'Nieparzyste' i 'Parzyste' jako argumenty. "nieparzyste" ma takie samo znaczenie jak 2n+1, A "parzyste" ma takie samo znaczenie jak 2n.

Dalsze omówienie tego niezwykłego zastosowania można znaleźć w Specyfikacja CSS W3C .

Szczegółowe Porównanie

Zobacz Demo: http://jsfiddle.net/rathoreahsan/sXHtB/ -- Link zaktualizowany

Zobacz też referencje

Http://api.jquery.com/eq-selector/

Http://api.jquery.com/nth-child-selector/

 54
Author: Ahsan Rathod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-22 09:55:23

:nth-child() Selektor: wybiera wszystkie elementy, które są NTH-potomkiem ich rodzica.

:eq() Selektor: wybierz element o indeksie n w obrębie dopasowanego zestawu .

Zobacz: http://api.jquery.com/eq-selector/ i http://api.jquery.com/nth-child-selector/

Powodzenia.
 13
Author: defuz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-12 12:31:48

:eq() pozwala na dostęp do elementów w obiekcie jQuery przez indeks

Http://api.jquery.com/eq-selector/

:nth-child pozwala również na dostęp do elementu an przez indeks, jednak odnosi się tylko do terminu znajdującego się bezpośrednio po jego lewej stronie.

Http://api.jquery.com/nth-child-selector/

Oznacza to, że jeśli chcesz wybrać jeden element z selektora, użyj :eq, jeśli chcesz ograniczyć selekcje do elementów z N-1 poprzedzającymi-siberings następnie użyj NTH-child.

Tablice Javascript są zwykle indeksowane od 0; jednak nth-child jest indeksowany od 1, ponieważ jest technicznie właściwością CSS w przeciwieństwie do jQuery.

 7
Author: MikeBaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 18:08:50

Eq () zaczyna się od 0, podczas gdy NTH-child () zaczyna się od 1

Zobacz różnice wyraźnie tutaj http://jsfiddle.net/9xu2R/

 1
Author: JSantos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-12 12:28:47
$("#dataTable tr:nth-child(1) td:nth-child(2)").html();

Oto tabela

<table id="dataTable" width="50%">
    <thead>
        <th>Name</th>
        <th>EnrollNo.</th>
    </thead>
    <tbody>
        <tr>
           <td>Somdip</td><td>IT001<td>
        </tr>
        <tr>
           <td>Sanyal</td><td>IT002<td>
        </tr>
    </tbody>
</table>

Selektor nth-child jquery pomoże Ci pobrać dokładne wartości komórek z tej tabeli. Praktyczny przykład, gdzie tr:nth-child(1) td:nth-child(2) pobiera 1,2 komórki tabeli.

 0
Author: somdip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-19 12:58:40

NTH-child wybiera nth potomek obiektu (- ów) nadrzędnego (- ych) inne wybiera N-Ten element w kolekcji (indeks zaczynający się od 0 LUB 1 jest tylko trywialną częścią różnicy). tak mówiąc tr td: NTH-child (5) wybiera każdy tr i dostaje ich 5-te dzieci, gdzie jako eq dostaje wszystkie TD we wszystkich trs i wybiera tylko 5-te TD ... Główną różnicą jest to. Rzeczywiście treść dokumentacji nie wskazuje na ten fakt prosto, ale garb słowa Jak to jest czarna magia ...

 0
Author: karadeniz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-21 11:37:20

:eq jest indeksowana, więc zaczyna się od 0. Nie jest również częścią specyfikacji Css.

Natomiast :nth-child jest częścią specyfikacji Css i odnosi się do pozycji elementu w drzewie DOM.

Jeśli chodzi o użycie, obie robią to samo.

Demo tutaj

 -2
Author: Tomgrohl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-12 12:31:31