2013-07-24 3 views
3

J'ai une table et j'ai un objet jQuery qui représente l'un des TD dans la table. Je veux être en mesure de parcourir toutes les lignes de la table en commençant par la rangée suivante de la rangée où se trouve ma TD jQuery'd.Comment faire une boucle sur des lignes de table spécifiques

Donc, si j'ai une table comme ceci:

<table> 
    <tr><td>A</td><td>B</td><td>C</td></tr> 
    <tr><td>D</td><td>E</td><td>F</td></tr> 
    <tr><td>G</td><td>H</td><td>I</td></tr> 
    <tr><td>J</td><td>K</td><td>L</td></tr> 
    <tr><td>M</td><td>N</td><td>O</td></tr> 
    <tr><td>P</td><td>Q</td><td>R</td></tr> 
</table> 

Et si j'ai un objet jQuery représentant le td avec un H en elle:

var theTD = $(...the H cell...); 

Dans ce cas, je voudrais faire une boucle dans les 3 dernières rangées.

est donc là un beau morceau succint de jQuery qui me donnerait l'équivalent de:

theTD.nextRow_to_lastRow.each(... 
+1

s'il vous plaît se référer à http://api.jquery.com/next-siblings-selector/ –

+0

Regarde une solution probable, comment l'utiliser, le lien que vous avez fourni semble parler de frères et soeurs prev, bien qu'il soit intitulé next sibilings, il n'utilise pas non plus un objet jQuery existant. Comment l'utiliser avec ma variable theTD? – Graham

+0

OK figuré dehors - finalement: theTD.parent(). Find ("~ tr"). Chaque (... – Graham

Répondre

0

Avec l'aide de ilan, je suis arrivé là-bas à la fin:

theTD.parent().find("~ tr").each(

Autres replys fera le travail, mais ce qui précède est ce que je cherchais

0
var all_td_in_a_table = $("#table-id td") 

puis creux en boucle avec pour ou foreach et rechercher h/div/texte ou ce vous voulez

+0

Fonctionne, mais je ne veux pas faire une boucle sur toutes les lignes et la table n'aura pas un id – Graham

0

Votre situation est assez compliquée et je ne pouvais pas la comprendre complètement, cependant; Espérons que cela aide: en utilisant

var rows = $("#tableid tr td"); 

vous aurez toutes les cellules. maintenant vous pouvez parcourir chacun d'eux et vérifier la valeur ou le texte. foreach in jquery:

$(rows).each(function(index) { 
    console.log(index + ": " + $(this).text()); 
}); 
1

Quelque chose comme ça?

var td = $('td:contains("H")'); 

var tr = $('tr').length; 
for(i= td.parent().index()+1; i < tr;i++){ 
    $.each($('tr:eq('+i+') td'),function(){ 
     console.log($(this).text()); 
    }); 
} 

Vérifier demo dans la console

+0

Réponse la plus proche jusqu'à présent.J'ai enlevé le td de la ligne "each" pour obtenir ce que je veux, mais je ne veux pas non plus passer par toutes les lignes depuis le début. – Graham

1

Je pense que vous êtes après quelque chose comme ceci:

$('td').filter(function() { 
    return $(this).text() == 'H'; 
}).parent().nextAll().each(function() { 
    console.log(this); 
}); 

qui vous donnera les lignes:

<tr><td>J</td><td>K</td><td>L</td></tr> 
<tr><td>M</td><td>N</td><td>O</td></tr> 
<tr><td>P</td><td>Q</td><td>R</td></tr> 
+0

@Graham: [Voici un exemple violon] (http://jsfiddle.net/9ueqE/13/) – billyonecan

+0

trop spécifique à mon exemple, et pas si bon pour ma question – Graham

0

Vous peut également utiliser une boucle for qui ne cible que les trois derniers lignes:

var table = document.getElementById('table'), 
    row = table.querySelectorAll('tr'); 

for(i = 0; i < row.length; i++) { 
    if (i >= 3) { 
     console.log(row[i]); 
    } 
} 

JSFIDDLE

+0

Les 3 dernières lignes ne fonctionne que pour mon exemple, pas pour ma question – Graham

Questions connexes