jQuery: find next table-row

MBaas picture MBaas · Nov 2, 2009 · Viewed 85.2k times · Source

I have a table, containing rows, contaning cells - and some of them contain an img as follows:

<img id="FormView1_btnSave_row1%1%new" style="border-width: 0px; cursor: pointer;"
src="grafik/ok_16x16.gif" onclick="cleverStuff(this)"/>

In the function cleverStuff I would like to operate on the line that follows the line in which the button was clicked - this special button is contained in the last visible line only, there are a bunch of hidden lines below and I want to make the first hidden line visible - but I fail at getting to the next line. My understanding was that all combination of parent() and next() could be used to get from the img to the td, to the tr and finally to the next tr. So I tried to verify this:

$(ctrl).attr('id') correctly returns the img's id :)

$(ctrl).parent().attr('id') returns NULL.

What am I missing here?

Answer

tvanfosson picture tvanfosson · Nov 2, 2009

This should give you the enclosing tr of the element, even if it isn't the element's direct parent, then that row's next row. if you use parent on an element that is inside a td, it will give you the column, not the row. Supplying a filter to the parent() method will simply filter out the parent unless it happens to match the filter, typically resulting in no matching elements. Closest is probably what you want, but parents('tr') might be needed if you have nested tables and want the outer row instead of the inner row.

$(this).closest('tr').next('tr')