2013-08-24 4 views
6

Der Code, an dem ich arbeite ist wie folgt:Holen Sie sich den Text der n-ten TD mit allen tr bestimmten Klasse mit

<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> 

Ich mag mit den ganzen Text aller zweiten TD erhalten tr mit Klassenwarnung.

Ich habe versucht, Methode _.each war aber nicht erfolgreich

+0

gute Frage +10. –

Antwort

15

Versuchen Sie, diese

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

Demo Here

+0

+10. tolle. rette meine Zeit –

10

Versuchen

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

wenn Sie spezifischere Antwort wollen als :nth-child Selektor

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

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

+0

Ich habe nicht den vollständigen Code gegeben, sondern nur die Idee ... Jetzt können Sie gemäß der Antwort von Alnitak das gewünschte Ergebnis erstellen. –

+0

Die ': eq (1)' Syntax funktioniert nicht wirklich, AFAICS - es gibt nur ein Element zurück. – Alnitak

+0

@Alnitak ich bereits getestet und zur Verfügung gestellt Arbeitslösung ohne Verwendung von '.map()' und '.get()' –

1

Dies wird die Liste der Namen in einem Array erhalten:

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

Demo auf http://jsfiddle.net/alnitak/CjQAh/

(:eq(1) Verwendung nicht funktioniert, weil die :eq innerhalb des gesamten Satzes von zurückgegebenen Elemente auf den Index bezieht, nicht der Position relativ des Elements in seine <tr> Behälter, und so nur gibt ein Element zurück).

3

Verwenden von jQuery :nth-child Selektor zusammen mit .each() sollte für Sie arbeiten.

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>'); 
    }); 
}); 

Einige zusätzliche HTML:

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

wo 'td' und' tr' definieren für 'tr.warning td: nth-child (2)' .. ??? in Ihrem Snippet .. –

+0

Ich kopierte Ihren HTML-Code und es ist in der Geige, wollte nicht diesen riesigen Stück Code in die Antwort einfügen. – chucknelson

Verwandte Themen