I'll check out livequery.

On Oct 2, 6:19 pm, ricardobeat <[EMAIL PROTECTED]> wrote:
> The livequery plugin (http://brandonaaron.net/docs/livequery/) might
> help you. You only bind the hover function once for a selector, and
> all TR's subsequently added to the tables will have the event covered
> with no need to bind it again.
>
> And just so you know, this
>   tbody.hover(function () {
>           // over
>           // wish rows will be exposed on 'out' (it won't)
>           var rows = $(this).children('tr');
>       tr.addClass('hovered');
>     }, function () {
>           // out
>           rows.removeClass('hovered'); // this doesn't work
>     });
>
> doesn't work because the 'rows' var is only known inside the first
> function. You have to either declare it again on the other one or use
> the jquery object directly.
>
> - ricardo
>
> On Oct 2, 5:44 pm, Brad <[EMAIL PROTECTED]> wrote:
>
> > Leonardo,
>
> > I looked at my actual code again and wondered what would happen if I
> > bound the hover at the end of the loop. Your recommendations partially
> > work if I do that. Since each tbody can have a variable number of
> > rows, my intent is to highlight all rows when hovered. Your examples
> > only highlight the first row, which isn't the desired affect. I could
> > simply style the whole tbody, but the results when doing that are
> > undesirable.
>
> > I'm most likely dealing with a special case here with some unusual
> > requirements. In most cases I would expect your recommendations to
> > work.
>
> > Thanks Again
>
> > On Oct 2, 2:25 pm, Brad <[EMAIL PROTECTED]> wrote:
>
> > > That doesn't work in my case, but thanks again for the
> > > recommendation.  I should note that the code
>
> > > // Insert HTML row into table
> > >   var tbody = $('<tbody>').appendTo('#' + target_id + ' table');
> > >   tbody.attr('id','id-' + row.shipment_id);
>
> > > // This will highlight a tbody's rows on mouseEnter.
> > > // The original row coloring will be restored on mouseLeave.
> > > // A tbody may have numerous rows.
>
> > >   tbody.hover(function () {  // <-- tbody is a jQuery function
> > >     $(this).children('tr').addClass('hovered');
> > >   }, function () {
> > >     $(this).children('tr').removeClass('hovered');
> > >   });
>
> > > is part of a larger loop. I'm binding the hover to each tbody as it is
> > > dynamically inserted into the table.
>
> > > My original example, does work. I was just looking for a way to make
> > > the code smaller.
>
> > > Thanks
>
> > > On Oct 2, 2:01 pm, "Leonardo K" <[EMAIL PROTECTED]> wrote:
>
> > > > Try this:
>
> > > > $(tbody).find('tr').hover(function () {
> > > >       $(this).addClass('hovered');
> > > >    }, function () {
> > > >      $(this).removeClass('hovered');
> > > >    });
>
> > > > On Thu, Oct 2, 2008 at 16:39, Brad <[EMAIL PROTECTED]> wrote:
>
> > > > > Leonardo,
>
> > > > > I should have shown some more code. In my original example, tbody is a
> > > > > reference to an jQuery object.
> > > > > I'm working with a page that has many tables. Each table can have many
> > > > > <tbody> elements. The number of rows in each <tbody> can vary, but in
> > > > > all case there is more than 1.  Unfortunately the site is behind a
> > > > > firewall or I'd give a page.
>
> > > > > // Insert HTML row into table
> > > > >  var tbody = $('<tbody>').appendTo('#' + target_id + ' table');
> > > > >  tbody.attr('id','id-' + row.shipment_id);
>
> > > > > // This will highlight a tbody's rows on mouseEnter.
> > > > > // The original row coloring will be restored on mouseLeave.
> > > > > // A tbody may have numerous rows.
>
> > > > >   tbody.hover(function () {  // <-- tbody is a jQuery function
> > > > >     $(this).children('tr').addClass('hovered');
> > > > >  }, function () {
> > > > >    $(this).children('tr').removeClass('hovered');
> > > > >  });
>
> > > > > What I was curious about is if I could do something like the
> > > > > following, which doesn't work.
>
> > > > >    tbody.hover(function () {
> > > > >          // over
> > > > >          // wish rows will be exposed on 'out' (it won't)
> > > > >          var rows = $(this).children('tr');
> > > > >      tr.addClass('hovered');
> > > > >    }, function () {
> > > > >          // out
> > > > >          rows.removeClass('hovered'); // this doesn't work
> > > > >    });
>
> > > > > Your example inspired me to try
>
> > > > >    $(tbody).children('tr').hover(function () {
> > > > >       $(this).addClass('hovered');
> > > > >    }, function () {
> > > > >      $(this).removeClass('hovered');
> > > > >    });
>
> > > > > but that doesn't work either.
>
> > > > > Thanks
>
> > > > > On Oct 2, 11:56 am, "Leonardo K" <[EMAIL PROTECTED]> wrote:
> > > > > > $('tbody tr').hover(function () {
> > > > > >    $(this).addClass('hovered');
> > > > > >  }, function () {
> > > > > >    $(this).removeClass('hovered');
> > > > > >  });

Reply via email to