On Jun 21, 11:29 am, "Rob Desbois" <[EMAIL PROTECTED]> wrote: > Brad, > > Glad to help, I had to solve a similar problem a few months back. > > Regarding the use of the already-present names instead of duplicating them > to IDs, it may be worth the duplication for speed of selectors if that is a > concern. > It wholly depends on how many elements there are in the page - what could be > useful is to give each <tr> an id of "row-304".
Even with the original traverse up, then down code, selection was quick, but I didn't like the syntax. In the actual page the rows do have ids and I don't think the number of elements will be an issue. > That way you can use that as > a context for retrieving something by name, e.g. [untested]: > > var row = $("#row-"+index); > > > $('[EMAIL PROTECTED]'], row).val(...); > I'll give that a try. If I understand that selector correctly that will "find the input element with name 'serial-304' within the tr referenced by 'row'"? > I'm not certain of how beneficial either of those suggestions would be > speed-wise though, it could be worth testing if important. Out of curiosity, and for future reference what is the best way to measure the selection speed? Thanks Again! > --rob > > On 6/21/07, Brad Perkins <[EMAIL PROTECTED]> wrote: > > > > > > > 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. > > -- > 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.