Using Prototype's invoke with a user defined function
Invoke is a fantastic mixin within Prototype.js; however, looking at the Prototype API, using invoke in a "custom" way is not explained. Meaning, all the examples are for either built-in Javascript methods(substring) or Prototype methods (camelize). What if you wanted to use your own user defined function with invoke? Let's try it.
function expandTagHelper(element){ element.next().toggle(); var html = element.innerHTML == '+' ? '-' : '+'; element.update(html); } // This is what you want but it doesn't work $$('.tagExcerptShow').invoke('expandTagHelper');
What you must do is add this function to the Element object (making it one of its methods)
// My personal Element methods Element.addMethods( { expandTagHelper: function(element){ element.next().toggle(); var html = element.innerHTML == '+' ? '-' : '+'; element.update(html); } }); // Works! $$('.tagExcerptShow').invoke('expandTagHelper');
- Pushed on 10/21/2010 by Christian