2013-08-24 6 views
6

Kod, który pracuję nad przedstawia się następująco:Get tekst n-TD z wszystkich tr posiadające konkretnej klasy

<table> 
<tr class="warning"> 
    <td> 1 </td> 
    <td> name </td> 
    <td> address </td> 
    <td> phone no </td> 
    <td> Location </td> 
</tr> 
<tr> 
    <td> 3 </td> 
    <td> name2 </td> 
    <td> address2 </td> 
    <td> phone no2 </td> 
    <td> Location2 </td> 
</tr> 
<tr class="warning"> 
    <td> 6 </td> 
    <td> name5 </td> 
    <td> address5 </td> 
    <td> phone no5 </td> 
    <td> Location5 </td> 
</tr> 
<tr> 
    <td> 7 </td> 
    <td> name6 </td> 
    <td> address6 </td> 
    <td> phone no6 </td> 
    <td> Location6 </td> 
</tr> 

chciałbym uzyskać tekst całej drugiej TD z wszystkich tr z ostrzeżeniem o klasie.

Próbowałem, używając _.each metody, ale nie był udany

+0

dobre pytanie +10. –

Odpowiedz

15

Spróbuj

$('tr.warning').each(function(){ 
    alert($(this).find('td').eq(1).text()); 
    }); 

Demo Here

+0

+10. niesamowity. oszczędzaj mój czas –

10

Spróbuj

$('tr.warning td:eq(1)').text(); 

jeśli chcesz bardziej konkretnej odpowiedzi niż używać :nth-child selektor

$('tr.warning td:nth-child(2)').text() 

http://jsfiddle.net/dbuZG/5/

+0

Nie podałem pełnego kodu, tylko dałem ci pomysł ... teraz jak na odpowiedź podaną przez Alnitak możesz mapować i uzyskać wynik, którego potrzebujesz. –

+0

Składnia ': eq (1)' nie działa, AFAICS - zwraca tylko jeden element. – Alnitak

+0

@Alnitak dobrze już przetestowałem i dostarczyłem działające rozwiązanie bez użycia '.map()' i '.get()' –

1

Zostanie wyświetlona lista nazw w tablicy:

var names = $('tr.warning td:nth-child(2)').map(function() { 
    return $(this).text(); 
}).get(); 

demo na http://jsfiddle.net/alnitak/CjQAh/

(używając :eq(1) nie działa, ponieważ :eq odnosi się do indeksu w ciągu całego zestawu elementów zwróconych, a nie elementu położeniu względem jego <tr> pojemnika, a więc tylko zwraca jeden element).

3

Korzystanie z jQuery's :nth-child selektora wraz z .each() powinno zadziałać.

Fiddle: http://jsfiddle.net/chucknelson/KDy8X/

Jquery

$(function() { 
    //use the :nth-child selector to get second element 
    //iterate with .each() 
    $('table tr.warning td:nth-child(2)').each(function(index, element) { 
     var name = $(element).html(); 
     $('#name-list').append('<li>' + name + '</li>'); 
    }); 
}); 

Niektóre dodatkowe HTML:

<div id="warning-names"> 
    Warning Names: 
    <ul id="name-list"> 
    </ul> 
</div> 
+0

gdzie 'td' i' tr' definują dla 'tr.warning td: nth-child (2)' .. ??? w twoim fragmencie .. –

+0

Skopiowałem twój kod HTML i jest on w skrzypcach, nie chciałem wklejać tego ogromnego fragmentu kodu w odpowiedzi. – chucknelson