$(t).html()
zwroty
<td>test1</td><td>test2</td>
Chcę odzyskać drugi td
z $(t)
obiektu. Szukałem rozwiązania, ale nic mi nie działało. Masz pomysł, jak zdobyć drugi element?
jquery
jquery-selectors
Głosuj
źródło
źródło
$(t).children('td').eq(1)
i$(t).children()[1]
find()
metody jQuery? Jak w$(t).find('td').eq(1)
celu uzyskania drugiego<td>
, jeślit
, powiedzmy, tabela i musiałem spojrzeć w dół więcej niż 1 węzeł?.children('td').eq(1)
jakiegoś powodu nie mogłem dostać się do pracy, ale.find('td').eq(1)
działało dobrze.Oto rozwiązanie, które może być łatwiejsze do odczytania w kodzie:
Aby uzyskać 2. dziecko z listy nieuporządkowanej:
I bardziej rozbudowany przykład: ten kod pobiera tekst atrybutu „tytuł” drugiego elementu potomnego UL identyfikowanego jako „moja_lista”:
W tym drugim przykładzie możesz pozbyć się „ul” na początku selektora, ponieważ jest on zbędny, ponieważ identyfikator powinien być unikalny dla pojedynczej strony. Ma to na celu zwiększenie przejrzystości przykładu.
Uwaga na temat wydajności i pamięci , te dwa przykłady są dobre, ponieważ nie zmuszają jquery do zapisania listy elementów ul , które musiały być później filtrowane.
źródło
ul
, abyśmy nie musieli jej szukać.Jak to jest:
GŁÓWNA AKTUALIZACJA:
Oprócz tego, jak pięknie wygląda odpowiedź, musisz również zastanowić się nad wydajnością kodu. Dlatego odradza się również wiedzieć, co dokładnie znajduje się w
$(t)
zmiennej. Czy jest to tablica<TD>
czy<TR>
węzeł z kilkoma w<TD>s
środku? Aby dodatkowo zilustrować ten punkt, zobacz wyniki jsPerf na<ul>
liście z 50<li>
dziećmi:http://jsperf.com/second-child-selector
Jak
$(t).first().next()
dotąd metoda ta jest najszybsza.Ale z drugiej strony, jeśli weźmiesz
<tr>
węzeł i znajdziesz<td>
dzieci i przeprowadzisz ten sam test, wyniki nie będą takie same.Mam nadzieję, że to pomoże. :)
źródło
Nie widziałem tego tutaj wymienionego, ale możesz także użyć selektorów specyfikacji CSS. Zobacz dokumenty
źródło
Spróbuj tego:
lub
źródło
Oprócz korzystania z metod jQuery możesz także korzystać z natywnej
cells
kolekcji, którą<tr>
Ci daje.Zakładając, że
t
jest to element DOM, można pominąć tworzenie obiektu jQuery.źródło
Zaskakujące jest to, że nikt nie wspomniał o natywnym sposobie JS, aby to zrobić ...
Bez jQuery:
Wystarczy uzyskać dostęp do
children
właściwości elementu nadrzędnego. Będzie to powrót do żywych HTMLCollection dzieci elementów, które mogą być dostępne przez indeks. Jeśli chcesz zdobyć drugie dziecko:W twoim przypadku coś takiego może działać: (przykład)
Możesz także użyć kombinacji selektorów CSS3 /
querySelector()
i wykorzystać:nth-of-type()
. Ta metoda może działać lepiej w niektórych przypadkach, ponieważ w tym przypadku można również określić typ elementutd:nth-of-type(2)
(przykład)źródło
Użyj
.find()
metody$(t).find("td:eq(1)");
td:eq(x) // x is index of child you want to retrieve. eq(1) means equal to 1. //1 denote second element
źródło
Możesz użyć dwóch metod w jQuery, jak podano poniżej-
Korzystanie z jQuery: Selektor n-podrzędny Umieściłeś pozycję elementu jako jego argument, który wynosi 2, gdy chcesz wybrać drugi element li.
Korzystanie z jQuery: Selektor eq ()
Jeśli chcesz uzyskać dokładny element, musisz podać wartość indeksu elementu. Element listy zaczyna się od indeksu 0. Aby wybrać 2. element li, musisz użyć 2 jako argumentu.
Zobacz przykład: Uzyskaj drugi element podrzędny listy w jQuery
źródło