I don't think you can do that, but something like the following might
do the trick for you:

var Menu = Class.create({
  initialize: function(id) {
    this.id = id;
    this.items = [];
  },
  addItem: function(item) {
    this.items.push(item);
    return this;
  },
  toElement: function() {
    var menu = new Element("ul", { id: this.id, className: "menu" });
    this.items.map(Element.insert.curry(menu));
    return menu;
  }
});

You could have a similar MenuItem class that encapsulates the logic of
your menu items (event handling and whatnot), whose toElement returns
a <li>.

Then, since your Menu class responds to "toElement" you can just pass
it to Element.insert/update, etc to add it to the DOM.

var fileMenu = new Menu("file");
fileMenu.addItem(...);
$("menu_bar").insert(fileMenu);

See also 
http://groups.google.com/group/rubyonrails-spinoffs/msg/d8a72071c044d7e3
for more on how toElement works.

Best,
-Nicolas

On Dec 7, 2007 12:10 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
> is it possibile to create a subclass of DOM Elements? For example I
> would like to be able to write:
>
> var MyMenu = Class.create('UL', {
>   initialize: function () {
>   },
>   addItem: function (item) {
>     // create new LI and attach to this
>   }
> });
>
> var menu = new MyMenu();
> menu.addItem('hello');
>
> and I would like this code to create a new UL element, which would
> have an addidional addItem method. Is it possible?
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" 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/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to