@Richard:
> Maybe something like ...
>
> ['keyup', 'click', 'focus', 'blur'].each(function(eventName){
> $('filter').observe(eventName, function(evt){
> this.fire('check:filter');
> });
>
> });
That creates four identical functions (one for each event). Not
necessarily a problem, but...
@Walter: How 'bout *really* not repeating yourself: ;-)
// In your bag of tricks
Element.addMethods({
observeAll: function(element, eventNames, handler) {
if (!(element = $(element))) return;
eventNames = typeof eventNames === "string" ? $w(eventNames) :
eventNames;
eventNames.each(function(eventName) {
Event.observe(element, eventName, handler);
});
return element;
}
});
// Then in this specific case:
$('filter').observeAll(['keyup', 'click', 'focus', 'blur'],
function(evt) {
this.fire('check:filter');
});
// Or:
$('filter').observeAll('keyup click focus blur', function(evt) {
this.fire('check:filter');
});
// Or even:
var filter = $('filter');
filter.observeAll(
'keyup click focus blur',
Element.fire.curry(filter, 'check:filter'));
FWIW,
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com
On Dec 23, 10:02 am, Richard Quadling <[email protected]> wrote:
> On 22 December 2010 18:16, Walter Lee Davis <[email protected]> wrote:
>
>
>
>
>
>
>
>
>
> > I have a quick filter for hiding list items until only matches show. I want
> > to cover all the various ways that a user might interact with the search
> > field, so I write this lovely:
>
> > $('filter').observe('keyup', function(evt){
> > this.fire('check:filter');
> > });
> > $('filter').observe('click', function(evt){
> > this.fire('check:filter');
> > });
> > $('filter').observe('focus', function(evt){
> > this.fire('check:filter');
> > });
> > $('filter').observe('blur', function(evt){
> > this.fire('check:filter');
> > });
>
> > Is there any way to write this more clearly, as in with fewer lines of code?
>
> > I'm using 1.6.latest, haven't tried the new 1.7 goodies yet. Would that
> > help?
>
> > 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
> > [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> >http://groups.google.com/group/prototype-scriptaculous?hl=en.
>
> Maybe something like ...
>
> ['keyup', 'click', 'focus', 'blur'].each(function(eventName){
> $('filter').observe(eventName, function(evt){
> this.fire('check:filter');
> });
>
> });
>
> --
> Richard Quadling
> Twitter : EE : Zend
> @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY
--
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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en.