Rob, That is an excellent suggestion. I didn't give actual source in the example, but it turns out that each of the selects and inputs have unique numbered "name" attributes already, e.g., name="serial-304". The numeric part correspond to keys in the db backend. So I can either add a redundant id attribute or just lookup based on $ ('[EMAIL PROTECTED]']) or $('[EMAIL PROTECTED]']).
re: not using .val For some reason I thought that had been deprecated when .id and .name were. Thanks for pointing out that it still exists. On Jun 21, 2:29 am, "Rob Desbois" <[EMAIL PROTECTED]> wrote: > I would suggest making all of these items related via numeric IDs, you then > dispose with having to traverse up and back down the DOM to find the related > elements: > > <tr> > > > > > <td> > > <select id="select_1">...</select> > > </td> > > <td> > > <input id="text_1a" type="text" ... /> > > </td> > > <td> > > <input id="text_1b" type="text" ... /> > > </td> > > <td> > > <input id="text_1c" type="text" ... /> > > </td> > > <td> > > ... > > </td> > > </tr> > > > // Update 2nd column <input> with new_value. > > // $(this) is the select in the first row cell. > > var index = /select_(\d+)/.exec(this.id)[1]; // Get the number from the > > ID. There is no checking if it doesn't match. > > var new_value = $(this).val(); > > $("text_"+index+"a").val(new_value); > > Incidentally, as I've used here, the .val() function is a handy shortcut for > .attr("val", ...) > > I don't know what the speed difference is here but I'm guessing it'll be > pretty good. > > HTH, > --rob > > On 6/21/07, Brad Perkins <[EMAIL PROTECTED]> wrote: > > > > > > > Imagine a table row like this > > > <tr> > > <td> > > <select>...</select> > > </td> > > <td> > > <input type="text" ... /> > > </td> > > <td> > > <input type="text" ... /> > > </td> > > <td> > > <input type="text" ... /> > > </td> > > <td> > > ... > > </td> > > </tr> > > > Depending on the select option I need to modify or clear values in the > > text inputs in the 2nd, 3rd, and 4th cells. > > > I find that this code works, but suspect there may be a better way to > > achieve the same result with less code? > > > // Update 2nd column <input> with new_value. > > // $(this) is the select in the first row cell. > > $ > > > (this).parent('td').parent('tr').children('td').eq(1)children('input').attr("value",new_value); > > > Since I'll be updating various cells I suppose this helps, but again > > suspect there is a better way. > > var cells = $(this).parent('td').parent('tr').children('td'); > > cells.eq(1).children('input').attr("value",new_value_1); > > cells.eq(3).children('input').attr("value",new_value_2); > > cells.eq(4).children('input').attr("value",new_value_3); > > > Thanks > > > Brad > > -- > Rob Desbois > Eml: [EMAIL PROTECTED] > Tel: 01452 760631 > Mob: 07946 705987 > "There's a whale there's a whale there's a whale fish" he cried, and the > whale was in full view. > ...Then ooh welcome. Ahhh. Ooh mug welcome.