var elm = evt.element();
if(elm.tagName.toString().toLowerCase() != 'td') elm = elm.up('td');
whenever I am constructing a rollover listener, since it works around
the whole issue with mouseover / out events firing whenever you move
over a child of the element you're trying to observe. Is there a
simpler way to do this, a more Prototype-y way, that is? I've had a
look around the API, and I also had a Google, but the former didn't
turn up anything useful and the latter turned up every commit message
from every project that includes Prototype.
Thanks in advance,
Walter
I belive that is what Element.findElement is for.
Colin
Thanks,
Walter
> --
>
> You received this message because you are subscribed to the Google
> Groups "Prototype & script.aculo.us" group.
> To post to this group, send email to prototype-s...@googlegroups.com
> .
> To unsubscribe from this group, send email to prototype-scripta...@googlegroups.com
> .
> For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en
> .
>
>
is exactly the same as doing:
var elm = evt.element();
if(elm.tagName.toString().toLowerCase() != 'td') elm = elm.up
('td');
Only it'll accept any kind of CSS selector.
$$('.my_table td').each(function(cell){
cell.observe('mouseover', listener.curry(cell));
});
function listener(cell, evt){
if(evt.element() != cell)
return false;
}
Are you trying to have a clean way to avoid flickering?
--
> You could use a closure to ensure you're dealing with the right
> element.
>
> $$('.my_table td').each(function(cell){
>
> cell.observe('mouseover', listener.curry(cell));
>
> });
>
> function listener(cell, evt){
> if(evt.element() != cell)
> return false;
> }
>
> Are you trying to have a clean way to avoid flickering?
>
Sort of, really just trying to make sure that mouseover events
triggered by child elements are "credited" to the parent. I tried
Tobie's technique, and it works perfectly. My long-hand method worked
fine as well -- no flickering I could discern -- so it's really just a
coding elegance refinement I was going for rather than anything else.
I am using event delegation -- observing the entire table once rather
than each cell -- so maybe that's why I wasn't seeing any flicker.
Walter