A simple work around is to append a character to the id to keep them
unique. But also, store the ID in the parent TR.

e.g.

<tr id="u4">
<td class="emp">Bob Smith</td>
<td><div class="1-Jan-2008">link 1</div></td>
</tr>

Then you can get the id with

$('div.1-Jan-2008').click(function() {
  var id = $(this).parent().parent().attr('id).substr(1);
  alert("do something with employee id:"+id);
});

would that work?

On Jan 18, 7:43 pm, Shawn <[EMAIL PROTECTED]> wrote:
> I have a case that is going to prove to be processor intensive, so am
> looking for suggestions on how to make the code as responsive as
> possible.  In addition, I'm a little stumped on how to resolve a problem
> with my IDs.
>
> I have a page that will list hundreds of people (I'm ignoring paging for
> now, it's just not quite suitable).  For each person there will be a
> number of actionable items/links.  Each of these links imply to do
> something different, but all rely on the employee ID,  These links will
> also be embedded in sub-structures (divs/tables, etc.)  So a sample of
> one row might look something like this:
>
> <tr>
> <td>Bob Smith</td>
> <td><div>link 1</div></td>
> <td><table><tr><td>link2</td></tr></table</td>
> </tr>
>
> (this is very contrived to help illustrate the design issues... :)
>
> Now the problem.  If the first link (though it could be anywhere on the
> row) were to trigger a Cluetip with details for that employee and item,
> I'll need the employee ID, and supporting information (a date say, based
> on what column it's in).  In my current code I've done this:
>
> <tr>
> <td id="4">Bob Smith</td>
> <td><div id="4" class="1-Jan-2008">link 1</div></td>
> </tr>
>
> Now this isn't valid HTML because the IDs are not unique.  But, I need
> the ID to do the needed processing.  I can't just ask for the first
> sibling's ID, because my "trigger" elements are embeded in other
> structures.  The content is dynamic, so it may or may not have the same
> structure (it would be one of a small handful of possible structures)
> each time - so I can't embed the structure (i.e.
> .parents("tr").children("td:first") ).  My reasoning here is that if I
> put the target ID as close as possible to the trigger element, there is
> less processing needed to get that ID - which is a large factor when
> dealing with hundreds of rows on the page.
>
> So, my question is what others are doing in this sort of situation.
> I've tried various techniques, including building a JS object structure
> with the pertinent data, but keep hitting a performance issue.  Maybe I
> need to embed an object on each of my trigger elements that contains the
> needed data?  Something like $("#trigger")[0].extraData = { id: 4 }; ?
> But won't this run into run-away memory usage when I'm dealing with
> potentially thousands of these triggers (multiple triggers for each
> employee).
>
> If it helps conceptually, think of a table with one employee per row,
> and each of the remaining columns being a day.  Each day needing a
> trigger to show a Cluetip for what the employee is doing that day.
>
> I do realize my definitions are kinda simplistic, but hopefully there is
> enough there to get the issue across.  For me to define the full picture
> would need a book or three... :)
>
> Thanks for any input.

Reply via email to