2013-07-24 5 views
3

У меня есть таблица, и у меня есть объект jQuery, который представляет один из TD в таблице.Как перебрать определенные строки таблицы

Я хочу, чтобы иметь возможность прокручивать все строки в таблице, начиная со следующей строки из строки, в которой находится jQuery'd TD, до конца.

Так что, если у меня есть таблица вроде этого:

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

И предположим, у меня есть объект JQuery, представляющий тд с H в нем:

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

В этом случае, я хотел бы чтобы прорезать последние 3 строки.

Так есть хороший succint кусочек JQuery, который дал бы мне эквивалент:

theTD.nextRow_to_lastRow.each(... 
+1

см. Http://api.jquery.com/next-siblings-selector/ –

+0

Выглядит вероятное решение, как его использовать, ссылка, которую вы указали, кажется, говорит о предыдущих братьях и сестрах, хотя это под названием next sibilings, также он не использует существующий объект jQuery. Как использовать его с моей переменной TT? – Graham

+0

ОК выяснил это - в конце концов: theTD.parent(). Find ("~ tr"). Each (... – Graham

ответ

0

С помощью Илан, я получил там в конце концов:

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

Другие отвечено будет делать эту работу, но выше, что я искал

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

, а затем корыт кольцуют с для или Еогеаспа и поиска ч/DIV/текст или что вы хотите

+0

Будет работать, но я не хочу перебирать все строки, и таблица не будет иметь id – Graham

0

Ваша ситуация довольно сложная, и я не мог ее полностью понять; надеюсь, что это помогает: с помощью

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

вы будете иметь все ячейки. теперь вы можете проходить через каждый из них и проверять значение или текст. foreach in jquery:

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

Что-то вроде этого?

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

Проверить demo в консоли

+0

Ближайший ответ.Я удалил td из строки «each», чтобы получить то, что я хочу, но я также не хочу проходить через все строки с самого начала. – Graham

1

Я думаю, что вы после этого что-то вроде этого:

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

Который даст вам строки:

<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: [Вот пример скрипки] (http://jsfiddle.net/9ueqE/13/) – billyonecan

+0

слишком специфичен для моего примера и не очень хорош для моего вопроса – Graham

0

You также может использовать for-loop, который нацелен только на последние три строки:

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

Последние 3 строки работают только для моего примера, а не по моему вопросу – Graham

Смежные вопросы